Download Reference Manual
The Developer's Library for D
About Wiki Forums Source Search Contact

Changeset 3482

Show
Ignore:
Timestamp:
05/03/08 22:09:39 (7 months ago)
Author:
sean
Message:

Applied changes from #982. This closes #982

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/gc/basic/gcx.d

    r3349 r3482  
    20992099        void **p1 = cast(void **)pbot; 
    21002100        void **p2 = cast(void **)ptop; 
     2101        size_t pcache = 0; 
    21012102        uint changes = 0; 
    21022103 
     
    21082109 
    21092110            //if (log) debug(PRINTF) printf("\tmark %x\n", p); 
    2110             if (p >= minAddr) 
    2111             { 
     2111            if (p >= minAddr && p < maxAddr) 
     2112            { 
     2113                if ((cast(size_t)p & ~(PAGESIZE-1)) == pcache) 
     2114                continue; 
     2115 
    21122116                pool = findPool(p); 
    21132117                if (pool) 
     
    21382142                        continue; 
    21392143                    } 
     2144 
     2145                    if (bin >= B_PAGE) // Cache B_PAGE and B_PAGEPLUS lookups 
     2146                        pcache = cast(size_t)p & ~(PAGESIZE-1); 
    21402147 
    21412148                    //debug(PRINTF) printf("\t\tmark(x%x) = %d\n", biti, pool.mark.test(biti));