defaults to ORC (#19972)

* defaults to Orc

* bootstrap using refc

* use gc

* init orc defines

* unregister orc

* fix gc

* fix commands

* add prepareMutation for orc

* enable deepcopy for orc

* prepareMutation

* more fixes

* some cases

* bug #20081

* partial fixes

* partial fixes

* fixes command line

* more fixes

* build Nim with refc

* use gc

* more fixes

* rstore

* orc doesn't support threadpool

* more shallowCopy

* more fixes

* fixes unsafeNew

* workarounds

* small

* more fixes

* fixes some megatest

* tcodegenbugs1 refc

* fxies megatest

* build nimble with refc

* workaround tensordsl tests

* replace shallowCopy with move

* fixes action

* workaround

* add todo

* fixes important packages

* unpublic unregisterArcOrc

* fixes cpp

* enable windows

Co-authored-by: xflywind <43030857+xflywind@users.noreply.github.com>
This commit is contained in:
ringabout 2022-09-23 19:05:05 +08:00 • committed by GitHub
commit 7739e23420
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
81 changed files with 255 additions and 150 deletions

View file

@ -32,6 +32,10 @@ doAssert objDeref.x == 42
# String tests
obj.s = "lorem ipsum dolor sit amet"
when defined(gcArc) or defined(gcOrc):
prepareMutation(obj.s)
var indexAddr = addr(obj.s[2])
doAssert indexAddr[] == 'r'
@ -232,8 +236,17 @@ block: # bug #15939
const bar = proc2(foo)
doAssert bar == "foo"
template prepareMutationForOrc(x: string) =
when defined(gcArc) or defined(gcOrc):
when nimvm:
discard
else:
prepareMutation(x)
proc test15939() = # bug #15939 (v2)
template fn(a) =
when typeof(a) is string:
prepareMutationForOrc(a)
let pa = a[0].addr
doAssert pa != nil
doAssert pa[] == 'a'
@ -253,6 +266,7 @@ proc test15939() = # bug #15939 (v2)
# mycstring[ind].addr
template cstringTest =
var a2 = "abc"
prepareMutationForOrc(a2)
var b2 = a2.cstring
fn(b2)
when nimvm: cstringTest()

View file

@ -1,4 +1,5 @@
discard """
matrix: "--mm:refc"
outputsub: '''
Simple tree node allocation worked!
Simple cycle allocation worked!
@ -10,6 +11,7 @@ joinable: false
# and the code generation for gc walkers
# (and the garbage collector):
## todo fixme it doesn't work for ORC
type
PNode = ref TNode
TNode = object

View file

@ -26,6 +26,6 @@ proc main =
block: # SSL nimDisableCertificateValidation integration tests
runCmd fmt"{nim} r {options} -d:nimDisableCertificateValidation -d:ssl {testsDir}/untestable/thttpclient_ssl_disabled.nim"
block: # SSL certificate check integration tests
runCmd fmt"{nim} r {options} -d:ssl --threads:on {testsDir}/untestable/thttpclient_ssl_remotenetwork.nim"
runCmd fmt"{nim} r {options} -d:ssl --threads:on --mm:refc {testsDir}/untestable/thttpclient_ssl_remotenetwork.nim"
main()

View file

@ -66,8 +66,7 @@ let limit = 1'u64
let rangeVar = 0'u64 ..< limit
doAssert repr(rangeVar) == """[a = 0,
b = 0]"""
doAssert repr(rangeVar) == """0 .. 0""", repr(rangeVar)
# bug #15210