Exemple #1
0
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 );
}
Exemple #2
0
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 );
}