diff options
author | Araq <rumpf_a@web.de> | 2014-02-25 21:30:18 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2014-02-25 21:30:18 +0100 |
commit | 384a018906bf999355019bd3761f8b085b352eb6 (patch) | |
tree | 303c7a1eb779d4267eb62494c649e9d094407ad2 /compiler/vm.nim | |
parent | ad79b125e7ae9a703b8ea900ea3dd760ee1ff0c9 (diff) | |
download | Nim-384a018906bf999355019bd3761f8b085b352eb6.tar.gz |
htmlgen works again
Diffstat (limited to 'compiler/vm.nim')
-rw-r--r-- | compiler/vm.nim | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/compiler/vm.nim b/compiler/vm.nim index 0a3c17e8e..ed259636e 100644 --- a/compiler/vm.nim +++ b/compiler/vm.nim @@ -460,11 +460,16 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TRegister = assert regs[rb].node.kind == nkRefTy regs[ra].node = regs[rb].node.sons[0] else: - stackTrace(c, tos, pc, errIndexOutOfBounds) + stackTrace(c, tos, pc, errNilAccess) of opcWrDeref: # a[] = b - decodeBC(rkNode) - putIntoNode(regs[ra].node, regs[rb]) + let ra = instr.regA + let rb = instr.regB + case regs[ra].kind + of rkNodeAddr: putIntoNode(regs[ra].nodeAddr[], regs[rb]) + of rkRegisterAddr: regs[ra].regAddr[] = regs[rb] + of rkNode: putIntoNode(regs[ra].node, regs[rb]) + else: stackTrace(c, tos, pc, errNilAccess) of opcAddInt: decodeBC(rkInt) regs[ra].intVal = regs[rb].intVal + regs[rc].intVal |