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

Ticket #982: tango.patch

File tango.patch, 1.2 kB (added by CyberShadow, 16 years ago)
  • gcx.d

    old new  
    20442044        void **p1 = cast(void **)pbot; 
    20452045        void **p2 = cast(void **)ptop; 
    20462046        uint changes = 0; 
     2047        size_t pageCache; 
    20472048 
    20482049        //printf("marking range: %p -> %p\n", pbot, ptop); 
    20492050        for (; p1 < p2; p1++) 
     
    20522053            byte *p = cast(byte *)(*p1); 
    20532054 
    20542055            //if (log) debug(PRINTF) printf("\tmark %x\n", p); 
    2055             if (p >= minAddr
     2056            if (p >= minAddr && p < maxAddr
    20562057            { 
     2058                if((cast(size_t)p & ~(PAGESIZE-1)) == pageCache) 
     2059                    continue; 
     2060 
    20572061                pool = findPool(p); 
    20582062                if (pool) 
    20592063                { 
     
    20822086                        // Don't mark bits in B_FREE or B_UNCOMMITTED pages 
    20832087                        continue; 
    20842088                    } 
     2089                    if (bin >= B_PAGE)  // cache B_PAGE and B_PAGEPLUS lookups 
     2090                        pageCache = cast(size_t)p & ~(PAGESIZE-1); 
    20852091 
    20862092                    //debug(PRINTF) printf("\t\tmark(x%x) = %d\n", biti, pool.mark.test(biti)); 
    20872093                    if (!pool.mark.test(biti))