Changeset 143

Show
Ignore:
Timestamp:
05/11/06 14:10:25 (3 years ago)
Author:
krobillard
Message:

GC keeps function context blocks again.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/orca/gc.c

    r142 r143  
    254254                    orSetBit( bsBlk.byteArray, idx ); 
    255255 
    256                 // Must check contents of argument block even if below 
    257                 // sweepStart. 
    258                 idx = it->func.context; 
    259                 if( idx > 0 ) 
     256                idx = it->func.context - orEnv->freeBlocks.sweepStart; 
     257                if( idx >= 0 ) 
    260258                { 
     259                    orSetBit( bsBlk.byteArray, idx ); 
     260                } 
     261                else if( it->func.context ) 
     262                { 
     263                    // Must check contents of argument block even if below 
     264                    // sweepStart. 
    261265                    // During recursion this will waste some time 
    262266                    // rechecking stack values. 
    263                     checkBlock( orBLOCKS + idx ); 
     267                    checkBlock( orBLOCKS + it->func.context ); 
    264268                } 
    265269                break;