diff -r 000000000000 -r 6474c204b198 tools/jprof/stub/libmalloc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tools/jprof/stub/libmalloc.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,74 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef libmalloc_h___ +#define libmalloc_h___ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include "config.h" + +typedef unsigned long u_long; + +// For me->flags +#define JP_FIRST_AFTER_PAUSE 1 + +// Format of a jprof log entry. This is what's written out to the +// "jprof-log" file. +// It's called malloc_log_entry because the history of jprof is that +// it's a modified version of tracemalloc. +struct malloc_log_entry { + u_long delTime; + u_long numpcs; + unsigned int flags; + int thread; + char* pcs[MAX_STACK_CRAWL]; +}; + +// type's +#define malloc_log_stack 7 + +// Format of a malloc map entry; after this struct is nameLen+1 bytes of +// name data. +struct malloc_map_entry { + u_long nameLen; + u_long address; // base address +}; + +// A method that can be called if you want to programmatically control +// the malloc logging. Note that you must link with the library to do +// this (or use dlsym after dynamically loading the library...) +extern u_long SetMallocFlags(u_long flags); + +// The environment variable LIBMALLOC_LOG should be set to an integer +// value whose meaning is as follows: + +// Enable logging +#define LIBMALLOC_LOG 0x1 + +// Don't free memory when set +#define LIBMALLOC_NOFREE 0x2 + +// Check heap for corruption after every malloc/free/realloc +#define LIBMALLOC_CHECK 0x4 + +// Log reference count calls (addref/release) +#define LIBMALLOC_LOG_RC 0x8 + +// Log a stack trace +#define LIBMALLOC_LOG_TRACE 0x10 + +void __log_addref(void* p, int oldrc, int newrc); +void __log_release(void* p, int oldrc, int newrc); + +#ifdef __cplusplus +} /* end of extern "C" */ +#endif + +#endif /* libmalloc_h___ */