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': [
|
||||
[ 'OS == "linux"', {
|
||||
'variables' : {
|
||||
'linux_use_tcmalloc%': 0,
|
||||
},
|
||||
'sources/': [ ['exclude', '_(mac|win|chromeos)\\.cc$'],
|
||||
['exclude', '\\.mm?$' ] ],
|
||||
'sources!': [
|
||||
@ -378,6 +381,12 @@
|
||||
'sources/': [ ['include', '_chromeos\\.cc$'] ]
|
||||
},
|
||||
],
|
||||
[ 'linux_use_tcmalloc==1', {
|
||||
'dependencies': [
|
||||
'../third_party/tcmalloc/tcmalloc.gyp:tcmalloc',
|
||||
],
|
||||
},
|
||||
],
|
||||
],
|
||||
'dependencies': [
|
||||
'../build/util/build_util.gyp:lastchange',
|
||||
|
@ -52,6 +52,7 @@
|
||||
'../breakpad/breakpad.gyp:*',
|
||||
'../sandbox/sandbox.gyp:*',
|
||||
'../third_party/harfbuzz/harfbuzz.gyp:*',
|
||||
'../third_party/tcmalloc/tcmalloc.gyp:*',
|
||||
'../tools/gtk_clipboard_dump/gtk_clipboard_dump.gyp:*',
|
||||
'../tools/xdisplaycheck/xdisplaycheck.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',
|
||||
'type': 'none',
|
||||
'actions': [
|
||||
],
|
||||
'conditions': [
|
||||
['OS=="win"', {
|
||||
'targets': [
|
||||
{
|
||||
'action_name': 'libcmt',
|
||||
'inputs': [
|
||||
'prep_libc.sh',
|
||||
],
|
||||
'outputs': [
|
||||
'<(SHARED_INTERMEDIATE_DIR)/tcmalloc/libcmt.lib',
|
||||
],
|
||||
'action': [
|
||||
'./prep_libc.sh',
|
||||
'$(VCInstallDir)lib',
|
||||
'<(SHARED_INTERMEDIATE_DIR)/tcmalloc',
|
||||
'target_name': 'libcmt',
|
||||
'type': 'none',
|
||||
'actions': [
|
||||
{
|
||||
'action_name': 'libcmt',
|
||||
'inputs': [
|
||||
'prep_libc.sh',
|
||||
],
|
||||
'outputs': [
|
||||
'<(SHARED_INTERMEDIATE_DIR)/tcmalloc/libcmt.lib',
|
||||
],
|
||||
'action': [
|
||||
'./prep_libc.sh',
|
||||
'$(VCInstallDir)lib',
|
||||
'<(SHARED_INTERMEDIATE_DIR)/tcmalloc',
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
}],
|
||||
],
|
||||
}
|
||||
|
Reference in New Issue
Block a user