diff options
-rw-r--r-- | lib/core/refs.nim | 97 | ||||
-rw-r--r-- | lib/core/typelayouts.nim | 19 | ||||
-rw-r--r-- | lib/deprecated/pure/LockFreeHash.nim (renamed from lib/pure/collections/LockFreeHash.nim) | 0 | ||||
-rw-r--r-- | lib/deprecated/pure/events.nim (renamed from lib/pure/events.nim) | 0 | ||||
-rw-r--r-- | lib/deprecated/pure/sharedstrings.nim (renamed from lib/pure/collections/sharedstrings.nim) | 0 |
5 files changed, 0 insertions, 116 deletions
diff --git a/lib/core/refs.nim b/lib/core/refs.nim deleted file mode 100644 index e1575b68c..000000000 --- a/lib/core/refs.nim +++ /dev/null @@ -1,97 +0,0 @@ -# -# -# Nim's Runtime Library -# (c) Copyright 2017 Nim contributors -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -## Default ref implementation used by Nim's core. - -# We cannot use the allocator interface here as we require a heap walker to -# exist. Thus we import 'alloc' directly here to get our own heap that is -# all under the GC's control and can use the ``allObjects`` iterator which -# is crucial for the "sweep" phase. -import typelayouts, alloc - -type - TracingGc = ptr object of Allocator - visit*: proc (fieldAddr: ptr pointer; a: Allocator) {.nimcall.} - - GcColor = enum - white = 0, black = 1, grey = 2 ## to flip the meaning of white/black - ## perform (1 - col) - - GcHeader = object - t: ptr TypeLayout - color: GcColor - Cell = ptr GcHeader - - GcFrame {.core.} = object - prev: ptr GcFrame - marker: proc (self: GcFrame; a: Allocator) - - Phase = enum - None, Marking, Sweeping - - GcHeap = object - r: MemRegion - phase: Phase - currBlack, currWhite: GcColor - greyStack: seq[Cell] - -var - gch {.threadvar.}: GcHeap - -proc `=trace`[T](a: ref T) = - if not marked(a): - mark(a) - `=trace`(a[]) - -template usrToCell(p: pointer): Cell = - -template cellToUsr(cell: Cell): pointer = - cast[pointer](cast[ByteAddress](cell)+%ByteAddress(sizeof(GcHeader))) - -template usrToCell(usr: pointer): Cell = - cast[Cell](cast[ByteAddress](usr)-%ByteAddress(sizeof(GcHeader))) - -template markGrey(x: Cell) = - if x.color == gch.currWhite and phase == Marking: - x.color = grey - add(gch.greyStack, x) - -proc `=`[T](dest: var ref T; src: ref T) = - ## full write barrier implementation. - if src != nil: - let s = usrToCell(src) - markGrey(s) - system.`=`(dest, src) - -proc linkGcFrame(f: ptr GcFrame) {.core.} -proc unlinkGcFrame() {.core.} - -proc setGcFrame(f: ptr GcFrame) {.core.} - -proc registerGlobal(p: pointer; t: ptr TypeLayout) {.core.} -proc unregisterGlobal(p: pointer; t: ptr TypeLayout) {.core.} - -proc registerThreadvar(p: pointer; t: ptr TypeLayout) {.core.} -proc unregisterThreadvar(p: pointer; t: ptr TypeLayout) {.core.} - -proc newImpl(t: ptr TypeLayout): pointer = - let r = cast[Cell](rawAlloc(t.size + sizeof(GcHeader))) - r.typ = t - result = r +! sizeof(GcHeader) - -template new*[T](x: var ref T) = - x = newImpl(getTypeLayout(x)) - - -when false: - # implement these if your GC requires them: - proc writeBarrierLocal() {.core.} - proc writeBarrierGlobal() {.core.} - - proc writeBarrierGeneric() {.core.} diff --git a/lib/core/typelayouts.nim b/lib/core/typelayouts.nim deleted file mode 100644 index 445ce77c4..000000000 --- a/lib/core/typelayouts.nim +++ /dev/null @@ -1,19 +0,0 @@ -# -# -# Nim's Runtime Library -# (c) Copyright 2017 Nim contributors -# -# See the file "copying.txt", included in this -# distribution, for details about the copyright. -# - -type - TypeLayout* = object - size*, alignment*: int - destructor*: proc (self: pointer; a: Allocator) {.nimcall.} - trace*: proc (self: pointer; a: Allocator) {.nimcall.} - when false: - construct*: proc (self: pointer; a: Allocator) {.nimcall.} - copy*, deepcopy*, sink*: proc (self, other: pointer; a: Allocator) {.nimcall.} - -proc getTypeLayout(t: typedesc): ptr TypeLayout {.magic: "getTypeLayout".} diff --git a/lib/pure/collections/LockFreeHash.nim b/lib/deprecated/pure/LockFreeHash.nim index a9e68477a..a9e68477a 100644 --- a/lib/pure/collections/LockFreeHash.nim +++ b/lib/deprecated/pure/LockFreeHash.nim diff --git a/lib/pure/events.nim b/lib/deprecated/pure/events.nim index 35be7409f..35be7409f 100644 --- a/lib/pure/events.nim +++ b/lib/deprecated/pure/events.nim diff --git a/lib/pure/collections/sharedstrings.nim b/lib/deprecated/pure/sharedstrings.nim index 17e2e5888..17e2e5888 100644 --- a/lib/pure/collections/sharedstrings.nim +++ b/lib/deprecated/pure/sharedstrings.nim |