* fixes #20746; remove string copies for ORC booted compiler * add a test case * use `cursor` thanks to @beef331 * for old compilers * change file extension * change test cases
This commit is contained in:
parent
66b0c843c3
commit
600b3a91ab
2 changed files with 16 additions and 1 deletions
|
|
@ -32,6 +32,8 @@ const
|
|||
when hasFFI:
|
||||
import evalffi
|
||||
|
||||
when not defined(nimHasCursor):
|
||||
{.pragma: cursor.}
|
||||
|
||||
proc stackTraceAux(c: PCtx; x: PStackFrame; pc: int; recursionLimit=100) =
|
||||
if x != nil:
|
||||
|
|
@ -787,7 +789,7 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
|
|||
of opcLdStrIdx:
|
||||
decodeBC(rkInt)
|
||||
let idx = regs[rc].intVal.int
|
||||
let s = regs[rb].node.strVal
|
||||
let s {.cursor.} = regs[rb].node.strVal
|
||||
if idx <% s.len:
|
||||
regs[ra].intVal = s[idx].ord
|
||||
else:
|
||||
|
|
|
|||
13
tests/vm/t20746.nim
Normal file
13
tests/vm/t20746.nim
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
discard """
|
||||
timeout: 10
|
||||
joinable: false
|
||||
output: "fine"
|
||||
"""
|
||||
|
||||
func addString(): string =
|
||||
let x = newString(1000000)
|
||||
for i in 0..<1000000:
|
||||
discard x[i]
|
||||
|
||||
const translationTable = addString()
|
||||
echo "fine"
|
||||
Loading…
Add table
Add a link
Reference in a new issue