summary refs log tree commit diff stats
path: root/lib/system
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2013-02-19 23:07:08 +0100
committerAraq <rumpf_a@web.de>2013-02-19 23:07:08 +0100
commit4fc575bc26b4d521f1092572fe93c2bebfe12f7b (patch)
tree4cf5fc13834fc16d2cfa0cadd2ee8bac77b22c24 /lib/system
parenta4d47664d61f7d24d80d56997ee4a733f8f13e7a (diff)
downloadNim-4fc575bc26b4d521f1092572fe93c2bebfe12f7b.tar.gz
mark and sweep GC without bitvectors works
Diffstat (limited to 'lib/system')
-rwxr-xr-xlib/system/alloc.nim3
-rw-r--r--lib/system/gc_ms.nim4
2 files changed, 5 insertions, 2 deletions
diff --git a/lib/system/alloc.nim b/lib/system/alloc.nim
index 55e1c26a7..7b52780fe 100755
--- a/lib/system/alloc.nim
+++ b/lib/system/alloc.nim
@@ -319,7 +319,8 @@ iterator allObjects(m: TMemRegion): pointer {.inline.} =
         
         let size = c.size
         var a = cast[TAddress](addr(c.data))
-        while a <% c.acc:
+        let limit = a + c.acc
+        while a <% limit:
           yield cast[pointer](a)
           a = a +% size
       else:
diff --git a/lib/system/gc_ms.nim b/lib/system/gc_ms.nim
index 15975c035..9ebc27a9f 100644
--- a/lib/system/gc_ms.nim
+++ b/lib/system/gc_ms.nim
@@ -13,7 +13,9 @@
 
 const
   InitialThreshold = 4*1024*1024 # X MB because marking&sweeping is slow
-  withBitvectors = defined(gcUseBitvectors)
+  withBitvectors = defined(gcUseBitvectors) 
+  # bitvectors are significantly faster for GC-bench, but slower for
+  # bootstrapping and use more memory
   rcWhite = 0
   rcGrey = 1   # unused
   rcBlack = 2