mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-29 10:43:57 +00:00
new implementations for --gc:orc (#14121)
* cycle collector: new implementation * cycle collector: make self-adaptive based on its previous effectiveness * cycle collector: added Lins's jump stack to improve traversal from 3*N to 2*N * cycle collector: make tests green * API extensions and bugfixes * code cleanup and use --gc:orc for tasyncawait
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
discard """
|
||||
outputsub: "result: 5000"
|
||||
cmd: "nim c --gc:arc $file"
|
||||
cmd: "nim c --gc:orc $file"
|
||||
"""
|
||||
|
||||
import asyncdispatch, asyncnet, nativesockets, net, strutils, os
|
||||
@@ -71,4 +71,5 @@ main()
|
||||
|
||||
assert msgCount == swarmSize * messagesToSend
|
||||
echo "result: ", msgCount
|
||||
GC_fullCollect()
|
||||
echo "memory: ", formatSize(getOccupiedMem() - mem)
|
||||
|
||||
@@ -27,4 +27,5 @@ proc main(rootName: string) =
|
||||
|
||||
let mem = getOccupiedMem()
|
||||
main("yeah")
|
||||
GC_fullCollect()
|
||||
echo "leak: ", getOccupiedMem() - mem > 0
|
||||
|
||||
@@ -51,4 +51,5 @@ proc main =
|
||||
discard serve(PAsyncHttpServer(value: "asdas"))
|
||||
|
||||
main()
|
||||
GC_fullCollect()
|
||||
echo "MEMORY ", getOccupiedMem() - mem
|
||||
|
||||
@@ -50,4 +50,5 @@ proc main =
|
||||
|
||||
let mem = getOccupiedMem()
|
||||
main()
|
||||
GC_fullCollect()
|
||||
echo "MEM ", getOccupiedMem() - mem
|
||||
|
||||
@@ -15,4 +15,6 @@ proc main(x: int) =
|
||||
|
||||
let mem = getOccupiedMem()
|
||||
main(90)
|
||||
GC_fullCollect()
|
||||
|
||||
echo "MEM ", getOccupiedMem() - mem
|
||||
|
||||
@@ -61,4 +61,5 @@ proc main =
|
||||
|
||||
let mem = getOccupiedMem()
|
||||
main()
|
||||
GC_fullCollect()
|
||||
echo getOccupiedMem() - mem
|
||||
|
||||
@@ -394,7 +394,7 @@ proc run(self: var LoopTesterApp) =
|
||||
echo "Constructing CFG..."
|
||||
var n = 2
|
||||
|
||||
when not defined(gcOrc):
|
||||
when true: # not defined(gcOrc):
|
||||
# currently cycle detection is so slow that we disable this part
|
||||
for parlooptrees in 1..10:
|
||||
discard self.cfg.createNode(n + 1)
|
||||
@@ -437,4 +437,5 @@ proc main =
|
||||
let mem = getOccupiedMem()
|
||||
main()
|
||||
when defined(gcOrc):
|
||||
GC_fullCollect()
|
||||
doAssert getOccupiedMem() == mem
|
||||
|
||||
Reference in New Issue
Block a user