fix #16458; make useNimRtl compile for --gc:orc (#19512)

* fix #16458; make useNimRtl compile for --gc:orc/arc

* fix tests
This commit is contained in:
flywind
2022-02-11 18:16:27 +08:00
committed by GitHub
parent 27e548140b
commit b936bfd01a
4 changed files with 13 additions and 5 deletions

View File

@@ -82,8 +82,9 @@ else:
# XXX due to bootstrapping reasons, we cannot use compileOption("gc", "stack") here
include "system/gc_regions"
elif defined(nimV2) or usesDestructors:
var allocator {.rtlThreadVar.}: MemRegion
instantiateForRegion(allocator)
when not defined(useNimRtl):
var allocator {.rtlThreadVar.}: MemRegion
instantiateForRegion(allocator)
when defined(gcHooks):
include "system/gc_hooks"
elif defined(gcMarkAndSweep):

View File

@@ -119,7 +119,7 @@ template orcAssert(cond, msg) =
when logOrc:
proc strstr(s, sub: cstring): cstring {.header: "<string.h>", importc.}
proc nimTraceRef(q: pointer; desc: PNimTypeV2; env: pointer) {.compilerRtl, inline.} =
proc nimTraceRef(q: pointer; desc: PNimTypeV2; env: pointer) {.compilerRtl, inl.} =
let p = cast[ptr pointer](q)
if p[] != nil:
@@ -128,7 +128,7 @@ proc nimTraceRef(q: pointer; desc: PNimTypeV2; env: pointer) {.compilerRtl, inli
var j = cast[ptr GcEnv](env)
j.traceStack.add(p, desc)
proc nimTraceRefDyn(q: pointer; env: pointer) {.compilerRtl, inline.} =
proc nimTraceRefDyn(q: pointer; env: pointer) {.compilerRtl, inl.} =
let p = cast[ptr pointer](q)
if p[] != nil:
var j = cast[ptr GcEnv](env)

View File

@@ -75,7 +75,8 @@ proc prepareSeqAdd(len: int; p: pointer; addlen, elemSize, elemAlign: int): poin
proc shrink*[T](x: var seq[T]; newLen: Natural) {.tags: [], raises: [].} =
when nimvm:
setLen(x, newLen)
{.cast(tags: []).}:
setLen(x, newLen)
else:
#sysAssert newLen <= x.len, "invalid newLen parameter for 'shrink'"
when not supportsCopyMem(T):

6
tests/arc/t16458.nim Normal file
View File

@@ -0,0 +1,6 @@
discard """
matrix: "--gc:orc --d:useNimRtl"
action: "compile"
"""
echo 134