@Override public void visit(CastIntegerInstruction insn) { Expr value = Expr.var(insn.getValue().getIndex()); switch (insn.getDirection()) { case FROM_INTEGER: switch (insn.getTargetType()) { case BYTE: value = Expr.unary(UnaryOperation.INT_TO_BYTE, null, value); break; case SHORT: value = Expr.unary(UnaryOperation.INT_TO_SHORT, null, value); break; case CHAR: value = Expr.unary(UnaryOperation.INT_TO_CHAR, null, value); break; } break; case TO_INTEGER: break; } assign(value, insn.getReceiver()); }
@Override public void visit(ArrayLengthInstruction insn) { assign(Expr.unary(UnaryOperation.LENGTH, null, Expr.var(insn.getArray().getIndex())), insn.getReceiver()); }
@Override public void visit(NullCheckInstruction insn) { assign(Expr.unary(UnaryOperation.NULL_CHECK, null, Expr.var(insn.getValue().getIndex())), insn.getReceiver()); }
@Override public void visit(NegateInstruction insn) { assign(Expr.unary(UnaryOperation.NEGATE, mapOperandType(insn.getOperandType()), Expr.var(insn.getOperand().getIndex())), insn.getReceiver()); }
@Override public void visit(CastIntegerInstruction insn) { Expr value = Expr.var(insn.getValue().getIndex()); switch (insn.getDirection()) { case FROM_INTEGER: switch (insn.getTargetType()) { case BYTE: value = Expr.unary(UnaryOperation.INT_TO_BYTE, null, value); break; case SHORT: value = Expr.unary(UnaryOperation.INT_TO_SHORT, null, value); break; case CHAR: value = Expr.unary(UnaryOperation.INT_TO_CHAR, null, value); break; } break; case TO_INTEGER: break; } assign(value, insn.getReceiver()); }
@Override public void visit(ArrayLengthInstruction insn) { assign(Expr.unary(UnaryOperation.LENGTH, null, Expr.var(insn.getArray().getIndex())), insn.getReceiver()); }
@Override public void visit(NullCheckInstruction insn) { assign(Expr.unary(UnaryOperation.NULL_CHECK, null, Expr.var(insn.getValue().getIndex())), insn.getReceiver()); }
@Override public void visit(NegateInstruction insn) { assign(Expr.unary(UnaryOperation.NEGATE, mapOperandType(insn.getOperandType()), Expr.var(insn.getOperand().getIndex())), insn.getReceiver()); }