Ticket #982: tango.patch
File tango.patch, 1.2 kB (added by CyberShadow, 16 years ago) |
---|
-
gcx.d
old new 2044 2044 void **p1 = cast(void **)pbot; 2045 2045 void **p2 = cast(void **)ptop; 2046 2046 uint changes = 0; 2047 size_t pageCache; 2047 2048 2048 2049 //printf("marking range: %p -> %p\n", pbot, ptop); 2049 2050 for (; p1 < p2; p1++) … … 2052 2053 byte *p = cast(byte *)(*p1); 2053 2054 2054 2055 //if (log) debug(PRINTF) printf("\tmark %x\n", p); 2055 if (p >= minAddr )2056 if (p >= minAddr && p < maxAddr) 2056 2057 { 2058 if((cast(size_t)p & ~(PAGESIZE-1)) == pageCache) 2059 continue; 2060 2057 2061 pool = findPool(p); 2058 2062 if (pool) 2059 2063 { … … 2082 2086 // Don't mark bits in B_FREE or B_UNCOMMITTED pages 2083 2087 continue; 2084 2088 } 2089 if (bin >= B_PAGE) // cache B_PAGE and B_PAGEPLUS lookups 2090 pageCache = cast(size_t)p & ~(PAGESIZE-1); 2085 2091 2086 2092 //debug(PRINTF) printf("\t\tmark(x%x) = %d\n", biti, pool.mark.test(biti)); 2087 2093 if (!pool.mark.test(biti))