Fixes incorrect macro stack traces.

This commit is contained in:
Dominik Picheta 2014-08-11 20:47:38 +01:00
commit 25610a2f70
2 changed files with 13 additions and 2 deletions

View file

@ -1078,6 +1078,7 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
of opcNKind:
decodeB(rkInt)
regs[ra].intVal = ord(regs[rb].node.kind)
c.comesFromHeuristic = regs[rb].node.info
of opcNIntVal:
decodeB(rkInt)
let a = regs[rb].node
@ -1253,8 +1254,16 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
internalError(c.debug[pc],
"request to create a NimNode of invalid kind")
let cc = regs[rc].node
regs[ra].node = newNodeI(TNodeKind(int(k)),
if cc.kind == nkNilLit: c.debug[pc] else: cc.info)
if cc.kind != nkNilLit:
cc.info
elif c.comesFromHeuristic.line > -1:
c.comesFromHeuristic
elif c.callsite != nil and c.callsite.safeLen > 1:
c.callsite[1].info
else:
c.debug[pc])
regs[ra].node.flags.incl nfIsRef
of opcNCopyNimNode:
decodeB(rkNode)