MCPcopy Create free account
hub / github.com/HaxeFoundation/hxcpp / HXTRealloc

Method HXTRealloc

src/hx/Telemetry.cpp:520–562  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

518}
519
520void hx::Telemetry::HXTRealloc(void* old_obj, void* new_obj, int new_size)
521{
522 if (!allocations_enabled) return;
523 int old_obj_id = __hxt_ptr_id(old_obj);
524 int new_obj_id = __hxt_ptr_id(new_obj);
525
526 alloc_mutex.lock();
527
528 // Only track reallocations of objects currently known to be allocated
529 std::map<void*, hx::Telemetry*>::iterator exist = alloc_map.find(old_obj);
530 if (exist != alloc_map.end()) {
531 Telemetry* t = exist->second;
532 t->allocation_data->push_back(2); // realloc flag (necessary?)
533 t->allocation_data->push_back(old_obj_id);
534 t->allocation_data->push_back(new_obj_id);
535 t->allocation_data->push_back(new_size);
536
537 //printf("Object at %016lx moving to %016lx, new_size = %d bytes\n", old_obj, new_obj, new_size);
538
539 // HXT debug: Check for id collision
540#ifdef HXCPP_TELEMETRY_DEBUG
541 std::map<void*, hx::Telemetry*>::iterator exist_new = alloc_map.find(new_obj);
542 if (exist_new != alloc_map.end()) {
543 printf("HXT ERR: Object id collision (reloc)! at on %016lx, id=%016lx\n", (unsigned long)new_obj, (unsigned long)new_obj_id);
544 throw "uh oh";
545 }
546#endif
547
548 //__hxcpp_set_hxt_finalizer(old_obj, (void*)0); // remove old finalizer -- should GCInternal.InternalRealloc do this?
549 HXTReclaimInternal(old_obj); // count old as reclaimed
550 } else {
551 //printf("Not tracking re-alloc of untracked %016lx, id=%016lx\n", old_obj, old_obj_id);
552 alloc_mutex.unlock();
553 return;
554 }
555
556 alloc_map[new_obj] = this;
557 //__hxcpp_set_hxt_finalizer(new_obj, (void*)HXTReclaim);
558
559 //printf("Tracking re-alloc from %016lx, id=%016lx to %016lx, id=%016lx at %f\n", old_obj, old_obj_id, new_obj, new_obj_id, __hxcpp_time_stamp());
560
561 alloc_mutex.unlock();
562}
563
564} // end namespace hx
565

Callers 1

__hxt_gc_reallocFunction · 0.80

Calls 2

__hxt_ptr_idFunction · 0.85
findMethod · 0.80

Tested by

no test coverage detected