ARC: ported the GC tests over to --gc:arc
This commit is contained in:
parent
879801c639
commit
72237e2bcf
14 changed files with 79 additions and 29 deletions
|
|
@ -250,18 +250,19 @@ const ThisIsSystem = true
|
|||
proc internalNew*[T](a: var ref T) {.magic: "New", noSideEffect.}
|
||||
## Leaked implementation detail. Do not use.
|
||||
|
||||
proc new*[T](a: var ref T, finalizer: proc (x: ref T) {.nimcall.}) {.
|
||||
magic: "NewFinalize", noSideEffect.}
|
||||
## Creates a new object of type ``T`` and returns a safe (traced)
|
||||
## reference to it in ``a``.
|
||||
##
|
||||
## When the garbage collector frees the object, `finalizer` is called.
|
||||
## The `finalizer` may not keep a reference to the
|
||||
## object pointed to by `x`. The `finalizer` cannot prevent the GC from
|
||||
## freeing the object.
|
||||
##
|
||||
## **Note**: The `finalizer` refers to the type `T`, not to the object!
|
||||
## This means that for each object of type `T` the finalizer will be called!
|
||||
when not defined(gcDestructors):
|
||||
proc new*[T](a: var ref T, finalizer: proc (x: ref T) {.nimcall.}) {.
|
||||
magic: "NewFinalize", noSideEffect.}
|
||||
## Creates a new object of type ``T`` and returns a safe (traced)
|
||||
## reference to it in ``a``.
|
||||
##
|
||||
## When the garbage collector frees the object, `finalizer` is called.
|
||||
## The `finalizer` may not keep a reference to the
|
||||
## object pointed to by `x`. The `finalizer` cannot prevent the GC from
|
||||
## freeing the object.
|
||||
##
|
||||
## **Note**: The `finalizer` refers to the type `T`, not to the object!
|
||||
## This means that for each object of type `T` the finalizer will be called!
|
||||
|
||||
when defined(nimV2):
|
||||
proc reset*[T](obj: var T) {.magic: "Destroy", noSideEffect.}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue