示例#1
0
static void CleanAltDefs( symbol *sym )
/*************************************/
{
    symbol *    testring;
    symbol *    altsym;

    if( IS_SYM_ALIAS( sym ) || sym->info & SYM_DEAD || sym->u.altdefs == NULL )
        return;
    testring = NULL;
    while( (altsym = RingPop( &sym->u.altdefs)) != NULL ) {
        if( altsym->info & SYM_KILL ) {
            if( altsym->info & SYM_HAS_DATA ) {
                altsym->u.datasym = NULL;
                RingAppend( &testring, altsym );
            }
        } else if( !(altsym->info & SYM_HAS_DATA) ) {
            RingLookup( testring, SetNewDataSym, altsym );
        }
    }
}
示例#2
0
static void dwioBuffReleaseMemory(  // RELEASE MEMORY
    void )
{
    DWIOBUFF *buf;              // - current buffer

    for(;;) {
        buf = RingPop( &freeBufs );
        if( buf == NULL ) break;
        if( ! buf->written
         && ! CompFlags.compile_failed ) {
            savePrevNext( buf );
            beingWritten = buf;
            IoSuppTempWrite( buf->disk_addr
                           , TMPBLOCK_BSIZE * DWBLOCK_FACTOR
                           , buf->data );
            beingWritten = NULL;
        }
        CMemFree( buf );
    }
}