]> git.llucax.com Git - software/dgc/cdgc.git/blobdiff - rt/gc/cdgc/bits.d
Avoid redundant checks for finals bits
[software/dgc/cdgc.git] / rt / gc / cdgc / bits.d
index 9a8d1b48a7bdec9ad7fe50ee525defec2090bf2f..17b71f31d5849d5eb6bb9a46c0a270c97ca018d7 100644 (file)
@@ -26,7 +26,7 @@
 
 module rt.gc.cdgc.bits;
 
 
 module rt.gc.cdgc.bits;
 
-import rt.gc.cdgc.alloc: os_mem_map, os_mem_unmap, Vis;
+import os = rt.gc.cdgc.os;
 
 import cstring = tango.stdc.string;
 
 
 import cstring = tango.stdc.string;
 
@@ -67,15 +67,15 @@ struct GCBits
         return (nwords + 2) * uint.sizeof; // +2 for sentinels
     }
 
         return (nwords + 2) * uint.sizeof; // +2 for sentinels
     }
 
-    void Dtor(Vis vis = Vis.PRIV)
+    void Dtor(os.Vis vis = os.Vis.PRIV)
     {
     {
-        // Even when os_mem_unmap() can be called with a null pointer, the
-        // extra call might be significant. On hard GC benchmarks making the
-        // test for null here (i.e. not making the call) can reduce the GC time
-        // by almost ~5%.
+        // Even when os.dealloc() can be called with a null pointer, the extra
+        // call might be significant. On hard GC benchmarks making the test for
+        // null here (i.e. not making the call) can reduce the GC time by
+        // almost ~5%.
         if (data)
         {
         if (data)
         {
-            os_mem_unmap(data, data_size, vis);
+            os.dealloc(data, data_size, vis);
             data = null;
         }
     }
             data = null;
         }
     }
@@ -83,16 +83,15 @@ struct GCBits
     invariant
     {
         if (data)
     invariant
     {
         if (data)
-        {
-            assert(nwords * data[0].sizeof * 8 >= nbits);
-        }
+            assert (nwords ==
+                    ((nbits + (BITS_PER_WORD - 1)) >> BITS_SHIFT));
     }
 
     }
 
-    void alloc(size_t nbits, Vis vis = Vis.PRIV)
+    void alloc(size_t nbits, os.Vis vis = os.Vis.PRIV)
     {
         this.nbits = nbits;
         this.nwords = (nbits + (BITS_PER_WORD - 1)) >> BITS_SHIFT;
     {
         this.nbits = nbits;
         this.nwords = (nbits + (BITS_PER_WORD - 1)) >> BITS_SHIFT;
-        this.data = cast(uint*) os_mem_map(data_size, vis);
+        this.data = cast(uint*) os.alloc(data_size, vis);
         if (!data)
             onOutOfMemoryError();
     }
         if (!data)
             onOutOfMemoryError();
     }