@Override public void visit(BranchingInstruction insn) { escaping[insn.getOperand().getIndex()] = true; }
@Override public void visit(BranchingInstruction insn) { switch (insn.getCondition()) { case EQUAL: branch( compare(BinaryOperation.EQUALS, insn.getOperand()), insn.getConsequent(), insn.getAlternative()); break; case NOT_EQUAL: branch( compare(BinaryOperation.NOT_EQUALS, insn.getOperand()), insn.getConsequent(), insn.getAlternative()); break; case GREATER: branch( compare(BinaryOperation.GREATER, insn.getOperand()), insn.getConsequent(), insn.getAlternative()); break; case GREATER_OR_EQUAL: branch( compare(BinaryOperation.GREATER_OR_EQUALS, insn.getOperand()), insn.getConsequent(), insn.getAlternative()); break; case LESS: branch( compare(BinaryOperation.LESS, insn.getOperand()), insn.getConsequent(), insn.getAlternative()); break; case LESS_OR_EQUAL: branch( compare(BinaryOperation.LESS_OR_EQUALS, insn.getOperand()), insn.getConsequent(), insn.getAlternative()); break; case NOT_NULL: branch( Expr.binary( BinaryOperation.STRICT_NOT_EQUALS, Expr.var(insn.getOperand().getIndex()), Expr.constant(null)), insn.getConsequent(), insn.getAlternative()); break; case NULL: branch( Expr.binary( BinaryOperation.STRICT_EQUALS, Expr.var(insn.getOperand().getIndex()), Expr.constant(null)), insn.getConsequent(), insn.getAlternative()); break; } }