]> git.llucax.com Git - software/dgc/cdgc.git/blobdiff - rt/gc/cdgc/gc.d
Revert "Skip non-scanneable words in chunks"
[software/dgc/cdgc.git] / rt / gc / cdgc / gc.d
index b62d1bee948aad941e047f69ad5e1af95f376903..3a925fc40bf358a64ecdbde8985e3d932caf75da 100644 (file)
@@ -621,18 +621,7 @@ void mark(void *pbot, void *ptop, size_t* pm_bitmask)
 
     //printf("marking range: %p -> %p\n", pbot, ptop);
     for (; p1 + type_size <= p2; p1 += type_size) {
 
     //printf("marking range: %p -> %p\n", pbot, ptop);
     for (; p1 + type_size <= p2; p1 += type_size) {
-        size_t n = 0;
-        if (has_type_info) {
-            while (n < type_size && pm_bits[n / BITS_PER_WORD] == 0)
-                n += BITS_PER_WORD;
-            if (n < type_size && (pm_bits[n / BITS_PER_WORD] &
-                        ((1 << (BITS_PER_WORD / 2)) - 1)) == 0)
-                n += BITS_PER_WORD / 2;
-            else if (n < type_size && (pm_bits[n / BITS_PER_WORD] &
-                        ((1 << (BITS_PER_WORD / 4)) - 1)) == 0)
-                n += BITS_PER_WORD / 4;
-        }
-        for (; n < type_size; n++) {
+        for (size_t n = 0; n < type_size; n++) {
             // scan bit set for this word
             if (has_type_info &&
                     !(pm_bits[n / BITS_PER_WORD] & (1 << (n % BITS_PER_WORD))))
             // scan bit set for this word
             if (has_type_info &&
                     !(pm_bits[n / BITS_PER_WORD] & (1 << (n % BITS_PER_WORD))))