public static BFalseInstr decode(IRReaderDecoder d) { return new BFalseInstr(d.decodeLabel(), d.decodeOperand()); }
public static BFalseInstr decode(IRReaderDecoder d) { return new BFalseInstr(d.decodeLabel(), d.decodeOperand()); }
public static BranchInstr create(Label jmpTarget, Operand v1, Operand v2) { if (v2 instanceof Boolean) { return ((Boolean) v2).isFalse() ? new BTrueInstr(jmpTarget, v1) : new BFalseInstr(jmpTarget, v1); } return new BNEInstr(jmpTarget, v1, v2); }
public static BranchInstr create(Operand v1, Operand v2, Label jmpTarget) { if (v2 instanceof BooleanLiteral) { return ((BooleanLiteral) v2).isFalse() ? new BTrueInstr(v1, jmpTarget) : new BFalseInstr(v1, jmpTarget); } return new BNEInstr(v1, v2, jmpTarget); }
public static BranchInstr create(Label jmpTarget, Operand v1, Operand v2) { if (v2 instanceof Boolean) { return ((Boolean) v2).isFalse() ? new BTrueInstr(jmpTarget, v1) : new BFalseInstr(jmpTarget, v1); } return new BNEInstr(jmpTarget, v1, v2); }
@Override public Instr cloneForBlockCloning(InlinerInfo ii) { return new BFalseInstr(getArg1().cloneForInlining(ii), getJumpTarget()); }
public static BranchInstr create(Operand v1, Operand v2, Label jmpTarget) { if (v2 instanceof BooleanLiteral) { return ((BooleanLiteral) v2).isFalse() ? new BTrueInstr(v1, jmpTarget) : new BFalseInstr(v1, jmpTarget); } return new BNEInstr(v1, v2, jmpTarget); }
@Override public Instr cloneForBlockCloning(InlinerInfo ii) { return new BFalseInstr(getArg1().cloneForInlining(ii), getJumpTarget()); }
@Override public Instr clone(CloneInfo ii) { return new BFalseInstr(ii.getRenamedLabel(getJumpTarget()), getArg1().cloneForInlining(ii)); }
@Override public Instr cloneForInlinedScope(InlinerInfo ii) { return new BFalseInstr(getArg1().cloneForInlining(ii), ii.getRenamedLabel(getJumpTarget())); }
@Override public Instr clone(CloneInfo ii) { return new BFalseInstr(ii.getRenamedLabel(getJumpTarget()), getArg1().cloneForInlining(ii)); }
@Override public Instr cloneForInlinedScope(InlinerInfo ii) { return new BFalseInstr(getArg1().cloneForInlining(ii), ii.getRenamedLabel(getJumpTarget())); }
public static BranchInstr create(Operand v1, Operand v2, Label jmpTarget) { if (v2 instanceof BooleanLiteral) { return ((BooleanLiteral) v2).isTrue() ? new BTrueInstr(v1, jmpTarget) : new BFalseInstr(v1, jmpTarget); } if (v2 instanceof Nil) return new BNilInstr(v1, jmpTarget); if (v2 == UndefinedValue.UNDEFINED) return new BUndefInstr(v1, jmpTarget); return new BEQInstr(v1, v2, jmpTarget); }
public static BranchInstr create(Operand v1, Operand v2, Label jmpTarget) { if (v2 instanceof BooleanLiteral) { return ((BooleanLiteral) v2).isTrue() ? new BTrueInstr(v1, jmpTarget) : new BFalseInstr(v1, jmpTarget); } if (v2 instanceof Nil) return new BNilInstr(v1, jmpTarget); if (v2 == UndefinedValue.UNDEFINED) return new BUndefInstr(v1, jmpTarget); return new BEQInstr(v1, v2, jmpTarget); }
newInstrs.add(new BTrueInstr(bi.getJumpTarget(), ua)); } else { newInstrs.add(new BFalseInstr(bi.getJumpTarget(), ua));
newInstrs.add(new BTrueInstr(bi.getJumpTarget(), ua)); } else { newInstrs.add(new BFalseInstr(bi.getJumpTarget(), ua));
return new BFalseInstr(jmpTarget, v1);
return new BFalseInstr(jmpTarget, v1);
public Operand buildOpAsgnConstDeclNode(OpAsgnConstDeclNode node) { if (node.isOr()) { Variable result = createTemporaryVariable(); Label done = getNewLabel(); Operand module = buildColon2ForConstAsgnDeclNode(node.getFirstNode(), result, false); addInstr(BNEInstr.create(done, result, UndefinedValue.UNDEFINED)); Operand rhsValue = build(node.getSecondNode()); copy(result, rhsValue); addInstr(new PutConstInstr(module, ((Colon3Node) node.getFirstNode()).getName(), rhsValue)); addInstr(new LabelInstr(done)); return result; } else if (node.isAnd()) { Variable result = createTemporaryVariable(); Label done = getNewLabel(); Operand module = buildColon2ForConstAsgnDeclNode(node.getFirstNode(), result, true); addInstr(new BFalseInstr(done, result)); Operand rhsValue = build(node.getSecondNode()); copy(result, rhsValue); addInstr(new PutConstInstr(module, ((Colon3Node) node.getFirstNode()).getName(), rhsValue)); addInstr(new LabelInstr(done)); return result; } Variable result = createTemporaryVariable(); Operand lhs = build(node.getFirstNode()); Operand rhs = build(node.getSecondNode()); addInstr(CallInstr.create(scope, result, node.getSymbolOperator(), lhs, new Operand[] { rhs }, null)); return addResultInstr(new CopyInstr(createTemporaryVariable(), putConstantAssignment(node, result))); }
public Operand buildOpAsgnConstDeclNode(OpAsgnConstDeclNode node) { if (node.isOr()) { Variable result = createTemporaryVariable(); Label done = getNewLabel(); Operand module = buildColon2ForConstAsgnDeclNode(node.getFirstNode(), result, false); addInstr(BNEInstr.create(done, result, UndefinedValue.UNDEFINED)); Operand rhsValue = build(node.getSecondNode()); copy(result, rhsValue); addInstr(new PutConstInstr(module, ((Colon3Node) node.getFirstNode()).getName(), rhsValue)); addInstr(new LabelInstr(done)); return result; } else if (node.isAnd()) { Variable result = createTemporaryVariable(); Label done = getNewLabel(); Operand module = buildColon2ForConstAsgnDeclNode(node.getFirstNode(), result, true); addInstr(new BFalseInstr(done, result)); Operand rhsValue = build(node.getSecondNode()); copy(result, rhsValue); addInstr(new PutConstInstr(module, ((Colon3Node) node.getFirstNode()).getName(), rhsValue)); addInstr(new LabelInstr(done)); return result; } Variable result = createTemporaryVariable(); Operand lhs = build(node.getFirstNode()); Operand rhs = build(node.getSecondNode()); addInstr(CallInstr.create(scope, result, node.getSymbolOperator(), lhs, new Operand[] { rhs }, null)); return addResultInstr(new CopyInstr(createTemporaryVariable(), putConstantAssignment(node, result))); }