@@ -62,24 +62,14 @@ void* calloc_hook_dummy(size_t num, size_t size) {
6262
6363extern " C" void * realloc_hook (void * addr, size_t size) {
6464 void * ret = _orig_realloc (addr, size);
65- if (MallocTracer::running ()) {
66- // On POSIX, realloc(ptr, 0) may return NULL and free ptr.
67- // Only record the free if allocation didn't simply fail (size > 0 with NULL ret = ENOMEM).
68- if (addr && !MallocTracer::nofree () && (ret != NULL || size == 0 )) {
69- MallocTracer::recordFree (addr);
70- }
71- if (ret != NULL && size > 0 ) {
72- MallocTracer::recordMalloc (ret, size);
73- }
65+ if (MallocTracer::running () && ret != NULL && size > 0 ) {
66+ MallocTracer::recordMalloc (ret, size);
7467 }
7568 return ret;
7669}
7770
7871extern " C" void free_hook (void * addr) {
7972 _orig_free (addr);
80- if (MallocTracer::running () && !MallocTracer::nofree () && addr) {
81- MallocTracer::recordFree (addr);
82- }
8373}
8474
8575extern " C" int posix_memalign_hook (void ** memptr, size_t alignment, size_t size) {
@@ -105,7 +95,6 @@ extern "C" void* aligned_alloc_hook(size_t alignment, size_t size) {
10595}
10696
10797volatile u64 MallocTracer::_interval;
108- bool MallocTracer::_nofree;
10998volatile u64 MallocTracer::_bytes_until_sample;
11099u64 MallocTracer::_configured_interval;
111100volatile u64 MallocTracer::_sample_count;
@@ -298,22 +287,12 @@ void MallocTracer::recordMalloc(void* address, size_t size) {
298287 }
299288}
300289
301- void MallocTracer::recordFree (void * address) {
302- MallocEvent event;
303- event._start_time = TSC::ticks ();
304- event._address = (uintptr_t )address;
305- event._size = 0 ;
306-
307- Profiler::instance ()->recordSample (NULL , 0 , OS::threadId (), BCI_NATIVE_MALLOC, 0 , &event);
308- }
309-
310290Error MallocTracer::start (Arguments& args) {
311291 _configured_interval = args._nativemem > 0 ? args._nativemem : 0 ;
312292 _interval = _configured_interval;
313- _nofree = args._nofree ;
314293 _bytes_until_sample = _configured_interval > 1 ? nextPoissonInterval () : 0 ;
315294 _sample_count = 0 ;
316- _last_config_update_ts = OS::nanotime ();
295+ __atomic_store_n (& _last_config_update_ts, OS::nanotime (), __ATOMIC_RELEASE );
317296
318297 if (!_initialized) {
319298 initialize ();
0 commit comments