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
commit b936bfd01a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 5 deletions

View file

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

View file

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

View file

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

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

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