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()