diff options
Diffstat (limited to 'compiler/btrees.nim')
-rw-r--r-- | compiler/btrees.nim | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/btrees.nim b/compiler/btrees.nim index c79442249..3b737b1bc 100644 --- a/compiler/btrees.nim +++ b/compiler/btrees.nim @@ -38,6 +38,7 @@ template less(a, b): bool = cmp(a, b) < 0 template eq(a, b): bool = cmp(a, b) == 0 proc getOrDefault*[Key, Val](b: BTree[Key, Val], key: Key): Val = + result = default(Val) var x = b.root while x.isInternal: for j in 0..<x.entries: @@ -68,7 +69,7 @@ proc copyHalf[Key, Val](h, result: Node[Key, Val]) = result.links[j] = h.links[Mhalf + j] else: for j in 0..<Mhalf: - when defined(gcArc) or defined(gcOrc): + when defined(gcArc) or defined(gcOrc) or defined(gcAtomicArc): result.vals[j] = move h.vals[Mhalf + j] else: shallowCopy(result.vals[j], h.vals[Mhalf + j]) @@ -91,7 +92,7 @@ proc insert[Key, Val](h: Node[Key, Val], key: Key, val: Val): Node[Key, Val] = if less(key, h.keys[j]): break inc j for i in countdown(h.entries, j+1): - when defined(gcArc) or defined(gcOrc): + when defined(gcArc) or defined(gcOrc) or defined(gcAtomicArc): h.vals[i] = move h.vals[i-1] else: shallowCopy(h.vals[i], h.vals[i-1]) |