* fix #16458; make useNimRtl compile for --gc:orc/arc * fix tests
This commit is contained in:
parent
27e548140b
commit
b936bfd01a
4 changed files with 13 additions and 5 deletions
|
|
@ -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):
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
6
tests/arc/t16458.nim
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
discard """
|
||||||
|
matrix: "--gc:orc --d:useNimRtl"
|
||||||
|
action: "compile"
|
||||||
|
"""
|
||||||
|
|
||||||
|
echo 134
|
||||||
Loading…
Add table
Add a link
Reference in a new issue