mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-06 04:57:49 +00:00
mark and sweep GC without bitvectors works
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
6
todo.txt
6
todo.txt
@@ -2,9 +2,8 @@ version 0.9.2
|
||||
=============
|
||||
|
||||
- FFI:
|
||||
* test libffi on windows --> fowl
|
||||
* test libffi on windows
|
||||
* test: times.format with the FFI
|
||||
- GC: variation of m&s GC
|
||||
- GC: implement simple generational GC
|
||||
* first version: mark black in write barrier
|
||||
* second version: introduce fake roots instead of marking black
|
||||
@@ -108,7 +107,8 @@ GC
|
||||
Optimizations
|
||||
=============
|
||||
|
||||
- optimize 'if' with a constant condition
|
||||
- optimize 'if' with a constant condition --> necessary in frontend for better
|
||||
dead code elimination
|
||||
- escape analysis for string/seq seems to be easy to do too;
|
||||
even further write barrier specialization
|
||||
- inlining of first class functions
|
||||
|
||||
Reference in New Issue
Block a user