Linux: add gyp flag for enabling tcmalloc. Also fix the linux build which didn't work in a clean client since tcmalloc.h wasn't generated.
Review URL: http://codereview.chromium.org/173387 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24538 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
@@ -365,6 +365,9 @@
|
|||||||
],
|
],
|
||||||
'conditions': [
|
'conditions': [
|
||||||
[ 'OS == "linux"', {
|
[ 'OS == "linux"', {
|
||||||
|
'variables' : {
|
||||||
|
'linux_use_tcmalloc%': 0,
|
||||||
|
},
|
||||||
'sources/': [ ['exclude', '_(mac|win|chromeos)\\.cc$'],
|
'sources/': [ ['exclude', '_(mac|win|chromeos)\\.cc$'],
|
||||||
['exclude', '\\.mm?$' ] ],
|
['exclude', '\\.mm?$' ] ],
|
||||||
'sources!': [
|
'sources!': [
|
||||||
@@ -378,6 +381,12 @@
|
|||||||
'sources/': [ ['include', '_chromeos\\.cc$'] ]
|
'sources/': [ ['include', '_chromeos\\.cc$'] ]
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
[ 'linux_use_tcmalloc==1', {
|
||||||
|
'dependencies': [
|
||||||
|
'../third_party/tcmalloc/tcmalloc.gyp:tcmalloc',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
],
|
],
|
||||||
'dependencies': [
|
'dependencies': [
|
||||||
'../build/util/build_util.gyp:lastchange',
|
'../build/util/build_util.gyp:lastchange',
|
||||||
|
@@ -52,6 +52,7 @@
|
|||||||
'../breakpad/breakpad.gyp:*',
|
'../breakpad/breakpad.gyp:*',
|
||||||
'../sandbox/sandbox.gyp:*',
|
'../sandbox/sandbox.gyp:*',
|
||||||
'../third_party/harfbuzz/harfbuzz.gyp:*',
|
'../third_party/harfbuzz/harfbuzz.gyp:*',
|
||||||
|
'../third_party/tcmalloc/tcmalloc.gyp:*',
|
||||||
'../tools/gtk_clipboard_dump/gtk_clipboard_dump.gyp:*',
|
'../tools/gtk_clipboard_dump/gtk_clipboard_dump.gyp:*',
|
||||||
'../tools/xdisplaycheck/xdisplaycheck.gyp:*',
|
'../tools/xdisplaycheck/xdisplaycheck.gyp:*',
|
||||||
'../courgette/courgette.gyp:*',
|
'../courgette/courgette.gyp:*',
|
||||||
|
80
third_party/tcmalloc/google/tcmalloc.h
vendored
Normal file
80
third_party/tcmalloc/google/tcmalloc.h
vendored
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
/* Copyright (c) 2003, Google Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are
|
||||||
|
* met:
|
||||||
|
*
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above
|
||||||
|
* copyright notice, this list of conditions and the following disclaimer
|
||||||
|
* in the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
* * Neither the name of Google Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* ---
|
||||||
|
* Author: Sanjay Ghemawat <opensource@google.com>
|
||||||
|
* .h file by Craig Silverstein <opensource@google.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TCMALLOC_TCMALLOC_H_
|
||||||
|
#define TCMALLOC_TCMALLOC_H_
|
||||||
|
|
||||||
|
// __THROW is defined in glibc systems. It means, counter-intuitively,
|
||||||
|
// "This function will never throw an exception." It's an optional
|
||||||
|
// optimization tool, but we may need to use it to match glibc prototypes.
|
||||||
|
#ifndef __THROW /* I guess we're not on a glibc system */
|
||||||
|
# define __THROW /* __THROW is just an optimization, so ok to make it "" */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdlib.h> // for struct mallinfo, if it's defined
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
#include <new> // for nothrow_t
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
void* tc_malloc(size_t size) __THROW;
|
||||||
|
void tc_free(void* ptr) __THROW;
|
||||||
|
void* tc_realloc(void* ptr, size_t size) __THROW;
|
||||||
|
void* tc_calloc(size_t nmemb, size_t size) __THROW;
|
||||||
|
void tc_cfree(void* ptr) __THROW;
|
||||||
|
|
||||||
|
void* tc_memalign(size_t __alignment, size_t __size) __THROW;
|
||||||
|
int tc_posix_memalign(void** ptr, size_t align, size_t size) __THROW;
|
||||||
|
void* tc_valloc(size_t __size) __THROW;
|
||||||
|
void* tc_pvalloc(size_t __size) __THROW;
|
||||||
|
|
||||||
|
void tc_malloc_stats(void) __THROW;
|
||||||
|
int tc_mallopt(int cmd, int value) __THROW;
|
||||||
|
// TODO(willchan): Fork this for Linux/Windows if we need this on Linux.
|
||||||
|
#if 0
|
||||||
|
struct mallinfo tc_mallinfo(void) __THROW;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
void* tc_new(size_t size);
|
||||||
|
void tc_delete(void* p) __THROW;
|
||||||
|
void* tc_newarray(size_t size);
|
||||||
|
void tc_deletearray(void* p) __THROW;
|
||||||
|
|
||||||
|
void* tc_new_nothrow(size_t size, const std::nothrow_t&) __THROW;
|
||||||
|
void* tc_newarray_nothrow(size_t size, const std::nothrow_t&) __THROW;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // #ifndef TCMALLOC_TCMALLOC_H_
|
38
third_party/tcmalloc/tcmalloc.gyp
vendored
38
third_party/tcmalloc/tcmalloc.gyp
vendored
@@ -235,25 +235,31 @@
|
|||||||
}],
|
}],
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
],
|
||||||
'target_name': 'libcmt',
|
'conditions': [
|
||||||
'type': 'none',
|
['OS=="win"', {
|
||||||
'actions': [
|
'targets': [
|
||||||
{
|
{
|
||||||
'action_name': 'libcmt',
|
'target_name': 'libcmt',
|
||||||
'inputs': [
|
'type': 'none',
|
||||||
'prep_libc.sh',
|
'actions': [
|
||||||
],
|
{
|
||||||
'outputs': [
|
'action_name': 'libcmt',
|
||||||
'<(SHARED_INTERMEDIATE_DIR)/tcmalloc/libcmt.lib',
|
'inputs': [
|
||||||
],
|
'prep_libc.sh',
|
||||||
'action': [
|
],
|
||||||
'./prep_libc.sh',
|
'outputs': [
|
||||||
'$(VCInstallDir)lib',
|
'<(SHARED_INTERMEDIATE_DIR)/tcmalloc/libcmt.lib',
|
||||||
'<(SHARED_INTERMEDIATE_DIR)/tcmalloc',
|
],
|
||||||
|
'action': [
|
||||||
|
'./prep_libc.sh',
|
||||||
|
'$(VCInstallDir)lib',
|
||||||
|
'<(SHARED_INTERMEDIATE_DIR)/tcmalloc',
|
||||||
|
],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
}],
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user