static cg_name finiDtorCall( // COMPLETE DTOR CALL call_handle handle, // - call handle unsigned cdtor ) // - cdtor arg to use { cg_name n; CgBackCallGened( handle ); n = CgFetchPtr( CGCall( handle ) ); CallStabCdArgSet( handle, cdtor ); return( n ); }
static void processCdtor( // PROCESS A CDTOR ENTRY IF POSSIBLE call_handle handle, // - handle for call boolean direct ) // - TRUE ==> direct call { cdtor_entry* curr; // - current entry cdtor_entry* prev; // - previous entry prev = NULL; RingIterBeg( ring_cdtors, curr ) { if( curr->handle == handle ) { if( direct ) { CallStabCdArgSet( handle, curr->value ); } RingPruneWithPrev( &ring_cdtors, curr, prev ); CarveFree( carver_cdtors, curr ); break; } prev = curr; } RingIterEnd( curr ); }