fixes #12195
This commit is contained in:
parent
62aa1a3cfe
commit
f1b7c0494e
3 changed files with 32 additions and 25 deletions
|
|
@ -216,6 +216,18 @@ proc asgnComplex(x: var TFullReg, y: TFullReg) =
|
|||
of rkRegisterAddr: x.regAddr = y.regAddr
|
||||
of rkNodeAddr: x.nodeAddr = y.nodeAddr
|
||||
|
||||
proc fastAsgnComplex(x: var TFullReg, y: TFullReg) =
|
||||
if x.kind != y.kind:
|
||||
myreset(x)
|
||||
x.kind = y.kind
|
||||
case x.kind
|
||||
of rkNone: discard
|
||||
of rkInt: x.intVal = y.intVal
|
||||
of rkFloat: x.floatVal = y.floatVal
|
||||
of rkNode: x.node = y.node
|
||||
of rkRegisterAddr: x.regAddr = y.regAddr
|
||||
of rkNodeAddr: x.nodeAddr = y.nodeAddr
|
||||
|
||||
proc writeField(n: var PNode, x: TFullReg) =
|
||||
case x.kind
|
||||
of rkNone: discard
|
||||
|
|
@ -535,10 +547,6 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
|
|||
of opcAsgnInt:
|
||||
decodeB(rkInt)
|
||||
regs[ra].intVal = regs[rb].intVal
|
||||
of opcAsgnStr:
|
||||
decodeBC(rkNode)
|
||||
createStrKeepNode regs[ra], rc != 0
|
||||
regs[ra].node.strVal = regs[rb].node.strVal
|
||||
of opcAsgnFloat:
|
||||
decodeB(rkFloat)
|
||||
regs[ra].floatVal = regs[rb].floatVal
|
||||
|
|
@ -560,6 +568,8 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
|
|||
regs[ra].floatVal = cast[float64](int64(regs[rb].intVal))
|
||||
of opcAsgnComplex:
|
||||
asgnComplex(regs[ra], regs[instr.regB])
|
||||
of opcFastAsgnComplex:
|
||||
fastAsgnComplex(regs[ra], regs[instr.regB])
|
||||
of opcAsgnRef:
|
||||
asgnRef(regs[ra], regs[instr.regB])
|
||||
of opcNodeToReg:
|
||||
|
|
@ -976,11 +986,9 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
|
|||
regs[ra].node.strVal.add getstr(regs[i])
|
||||
of opcAddStrCh:
|
||||
decodeB(rkNode)
|
||||
#createStrKeepNode regs[ra]
|
||||
regs[ra].node.strVal.add(regs[rb].intVal.chr)
|
||||
of opcAddStrStr:
|
||||
decodeB(rkNode)
|
||||
#createStrKeepNode regs[ra]
|
||||
regs[ra].node.strVal.add(regs[rb].node.strVal)
|
||||
of opcAddSeqElem:
|
||||
decodeB(rkNode)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue