inline static uintptr_t custodian_usage(NewGC*gc, void *custodian) { OTEntry **owner_table; uintptr_t retval = 0; int i; if(!gc->really_doing_accounting) { if (!gc->avoid_collection) { CHECK_PARK_UNUSED(gc); gc->park[0] = custodian; gc->really_doing_accounting = 1; garbage_collect(gc, 1, 0, 0, NULL); custodian = gc->park[0]; gc->park[0] = NULL; } } i = custodian_to_owner_set(gc, (Scheme_Custodian *)custodian); owner_table = gc->owner_table; if (owner_table[i]) retval = (owner_table[i]->memory_use + owner_table[i]->master_memory_use); else retval = 0; return gcWORDS_TO_BYTES(retval); }
inline static unsigned long custodian_usage(NewGC*gc, void *custodian) { OTEntry **owner_table; unsigned long retval = 0; int i; if(!gc->really_doing_accounting) { gc->park[0] = custodian; gc->really_doing_accounting = 1; garbage_collect(gc, 1, 0); custodian = gc->park[0]; gc->park[0] = NULL; } i = custodian_to_owner_set(gc, (Scheme_Custodian *)custodian); owner_table = gc->owner_table; if (owner_table[i]) retval = owner_table[i]->memory_use; else retval = 0; return gcWORDS_TO_BYTES(retval); }