macros: exprStructuralEquivalent for EqNimrodNode

Previously NimNode comparison in macros way returning false for anything else
than nil literal.
This commit is contained in:
Adam Strzelecki 2015-06-09 23:57:41 +02:00
commit 6ecce2941e

View file

@ -682,11 +682,15 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
of opcLtu: of opcLtu:
decodeBC(rkInt) decodeBC(rkInt)
regs[ra].intVal = ord(regs[rb].intVal <% regs[rc].intVal) regs[ra].intVal = ord(regs[rb].intVal <% regs[rc].intVal)
of opcEqRef, opcEqNimrodNode: of opcEqRef:
decodeBC(rkInt) decodeBC(rkInt)
regs[ra].intVal = ord((regs[rb].node.kind == nkNilLit and regs[ra].intVal = ord((regs[rb].node.kind == nkNilLit and
regs[rc].node.kind == nkNilLit) or regs[rc].node.kind == nkNilLit) or
regs[rb].node == regs[rc].node) regs[rb].node == regs[rc].node)
of opcEqNimrodNode:
decodeBC(rkInt)
regs[ra].intVal =
ord(exprStructuralEquivalent(regs[rb].node, regs[rc].node))
of opcXor: of opcXor:
decodeBC(rkInt) decodeBC(rkInt)
regs[ra].intVal = ord(regs[rb].intVal != regs[rc].intVal) regs[ra].intVal = ord(regs[rb].intVal != regs[rc].intVal)