diff options
author | Arne Döring <arne.doering@gmx.net> | 2017-07-17 08:12:15 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2017-07-17 08:12:15 +0200 |
commit | 52f092d02b5a4afa8cbd591bab9160e671f71700 (patch) | |
tree | 014875d219163f285d9e00137dcd19de0e106e79 /compiler/vm.nim | |
parent | 9427724a718ece9396d85fe8fa6a604b59f6bfd7 (diff) | |
download | Nim-52f092d02b5a4afa8cbd591bab9160e671f71700.tar.gz |
Lineinfo change (#6084)
Diffstat (limited to 'compiler/vm.nim')
-rw-r--r-- | compiler/vm.nim | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/compiler/vm.nim b/compiler/vm.nim index b8e6467b5..908bbeb69 100644 --- a/compiler/vm.nim +++ b/compiler/vm.nim @@ -1307,12 +1307,24 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg = ensureKind(rkNode) if c.callsite != nil: regs[ra].node = c.callsite else: stackTrace(c, tos, pc, errFieldXNotFound, "callsite") - of opcNLineInfo: + of opcNGetFile: decodeB(rkNode) let n = regs[rb].node - createStr regs[ra] - regs[ra].node.strVal = n.info.toFileLineCol - regs[ra].node.info = c.debug[pc] + regs[ra].node = newStrNode(nkStrLit, n.info.toFilename) + regs[ra].node.info = n.info + regs[ra].node.typ = n.typ + of opcNGetLine: + decodeB(rkNode) + let n = regs[rb].node + regs[ra].node = newIntNode(nkIntLit, n.info.line) + regs[ra].node.info = n.info + regs[ra].node.typ = n.typ + of opcNGetColumn: + decodeB(rkNode) + let n = regs[rb].node + regs[ra].node = newIntNode(nkIntLit, n.info.col) + regs[ra].node.info = n.info + regs[ra].node.typ = n.typ of opcEqIdent: decodeBC(rkInt) if regs[rb].node.kind == nkIdent and regs[rc].node.kind == nkIdent: |