ARC: cycle detector (#12823)
* first implementation of the =trace and =dispose hooks for the cycle collector * a cycle collector for ARC: progress * manual: the .acyclic pragma is a thing once again * gcbench: adaptations for --gc:arc * enable valgrind tests for the strutils tests * testament: better valgrind support * ARC refactoring: growable jumpstacks * ARC cycle detector: non-recursive algorithm * moved and renamed core/ files back to system/ * refactoring: --gc:arc vs --gc:orc since 'orc' is even more experimental and we want to ship --gc:arc soonish
This commit is contained in:
parent
5848f0042c
commit
83a736a34a
45 changed files with 939 additions and 229 deletions
|
|
@ -872,6 +872,9 @@ proc track(tracked: PEffects, n: PNode) =
|
|||
createTypeBoundOps(tracked, x[1].typ, n.info)
|
||||
setLen(tracked.guards.s, oldFacts)
|
||||
if tracked.owner.kind != skMacro:
|
||||
# XXX n.typ can be nil in runnableExamples, we need to do something about it.
|
||||
if n.typ != nil and n.typ.skipTypes(abstractInst).kind == tyRef:
|
||||
createTypeBoundOps(tracked, n.typ.lastSon, n.info)
|
||||
createTypeBoundOps(tracked, n.typ, n.info)
|
||||
of nkTupleConstr:
|
||||
for i in 0..<n.len:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue