tests sink string in refc

This commit is contained in:
ringabout
2025-02-28 20:52:39 +08:00
parent 7e8a650729
commit d7671d3665
2 changed files with 12 additions and 9 deletions

View File

@@ -368,14 +368,17 @@ proc genAssignment(p: BProc, dest, src: TLoc, flags: TAssignmentFlags) =
elif dest.storage == OnHeap:
let rd = rdLoc(dest)
let rs = rdLoc(src)
# we use a temporary to care for the dreaded self assignment:
var tmp: TLoc = getTemp(p, ty)
let rtmp = rdLoc(tmp)
p.s(cpsStmts).addAssignment(rtmp, rd)
p.s(cpsStmts).addAssignmentWithValue(rd):
p.s(cpsStmts).addCall(cgsymValue(p.module, "copyStringRC1"), rs)
p.s(cpsStmts).addSingleIfStmt(rtmp):
p.s(cpsStmts).addCallStmt(cgsymValue(p.module, "nimGCunrefNoCycle"), rtmp)
if dest.lode.typ.kind == tySink:
p.s(cpsStmts).addAssignment(rd, rs)
else:
# we use a temporary to care for the dreaded self assignment:
var tmp: TLoc = getTemp(p, ty)
let rtmp = rdLoc(tmp)
p.s(cpsStmts).addAssignment(rtmp, rd)
p.s(cpsStmts).addAssignmentWithValue(rd):
p.s(cpsStmts).addCall(cgsymValue(p.module, "copyStringRC1"), rs)
p.s(cpsStmts).addSingleIfStmt(rtmp):
p.s(cpsStmts).addCallStmt(cgsymValue(p.module, "nimGCunrefNoCycle"), rtmp)
else:
let rad = addrLoc(p.config, dest)
let rs = rdLoc(src)

View File

@@ -51,7 +51,7 @@ pkg "cello", url = "https://github.com/nim-lang/cello", useHead = true
pkg "checksums"
pkg "chroma"
pkg "chronicles", "nim c -o:chr -r chronicles.nim"
pkg "chronos", "nim c -r -d:release tests/testall"
pkg "chronos", "nim c -r -d:release --mm:refc tests/testall"
pkg "cligen", "nim c --path:. -r cligen.nim"
pkg "combparser", "nimble test --mm:orc"
pkg "compactdict"