protected EvalNode visitIfThen(CONTEXT context, CaseWhenEval.IfThenEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); visit(context, evalNode.getCondition(), stack); visit(context, evalNode.getResult(), stack); stack.pop(); return evalNode; }
protected EvalNode visitIfThen(CONTEXT context, CaseWhenEval.IfThenEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); visit(context, evalNode.getCondition(), stack); visit(context, evalNode.getResult(), stack); stack.pop(); return evalNode; }
@Override public RESULT visitIfThen(CONTEXT context, CaseWhenEval.IfThenEval evalNode, Stack<EvalNode> stack) { RESULT result; stack.push(evalNode); result = visit(context, evalNode.getCondition(), stack); visit(context, evalNode.getResult(), stack); stack.pop(); return result; }
int key = getSwitchIndex(ifThenList.get(i).getCondition()); EvalNode result = ifThenList.get(i).getResult(); cases[i] = new TajoGeneratorAdapter.SwitchCase(key, result); codeGen.visit(context, ifThenEval.getCondition(), stack); int NULL_FLAG = context.istore(); int CHILD = context.store(ifThenEval.getCondition().getValueType()); context.load(ifThenEval.getCondition().getValueType(), CHILD); context.methodvisitor.visitJumpInsn(Opcodes.IF_ICMPNE, (casesNum - 1) < i ? labels[i] : defaultLabel); // false
int key = getSwitchIndex(ifThenList.get(i).getCondition()); EvalNode result = ifThenList.get(i).getResult(); cases[i] = new TajoGeneratorAdapter.SwitchCase(key, result); codeGen.visit(context, ifThenEval.getCondition(), stack); int NULL_FLAG = context.istore(); int CHILD = context.store(ifThenEval.getCondition().getValueType()); context.load(ifThenEval.getCondition().getValueType(), CHILD); context.methodvisitor.visitJumpInsn(Opcodes.IF_ICMPNE, (casesNum - 1) < i ? labels[i] : defaultLabel); // false
if (ifThen.getCondition().equals(evalNode)) { ifThen.setCondition(tobeReplaced);
if (ifThen.getCondition().equals(evalNode)) { ifThen.setCondition(tobeReplaced);
private static EvalNode extractCommonTerm(List<CaseWhenEval.IfThenEval> ifThenEvals) { EvalNode commonTerm = null; for (CaseWhenEval.IfThenEval ifThenEval : ifThenEvals) { EvalNode predicate = ifThenEval.getCondition(); if (!checkIfSimplePredicate(predicate)) { return null; } BinaryEval bin = (BinaryEval) predicate; EvalNode baseTerm; if (bin.getLeftExpr().getType() == EvalType.CONST) { baseTerm = bin.getRightExpr(); } else { baseTerm = bin.getLeftExpr(); } if (commonTerm == null) { commonTerm = baseTerm; } else { if (!baseTerm.equals(commonTerm)) { return null; } } } return commonTerm; }
@Override protected EvalNode visitCaseWhen(Object o, CaseWhenEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); CaseWhenPredicate caseWhenPredicate = new CaseWhenPredicate(); for (CaseWhenEval.IfThenEval ifThenEval : evalNode.getIfThenEvals()) { visit(o, ifThenEval.getCondition(), stack); Expr condition = exprs.pop(); visit(o, ifThenEval.getResult(), stack); Expr result = exprs.pop(); caseWhenPredicate.addWhen(condition, result); } if (evalNode.hasElse()) { visit(o, evalNode.getElse(), stack); Expr elseResult = exprs.pop(); caseWhenPredicate.setElseResult(elseResult); } exprs.push(caseWhenPredicate); stack.pop(); return null; } }
private static EvalNode extractCommonTerm(List<CaseWhenEval.IfThenEval> ifThenEvals) { EvalNode commonTerm = null; for (int i = 0; i < ifThenEvals.size(); i++) { EvalNode predicate = ifThenEvals.get(i).getCondition(); if (!checkIfSimplePredicate(predicate)) { return null; } BinaryEval bin = (BinaryEval) predicate; EvalNode baseTerm; if (bin.getLeftExpr().getType() == EvalType.CONST) { baseTerm = bin.getRightExpr(); } else { baseTerm = bin.getLeftExpr(); } if (commonTerm == null) { commonTerm = baseTerm; } else { if (!baseTerm.equals(commonTerm)) { return null; } } } return commonTerm; }
@Override protected EvalNode visitIfThen(Context context, CaseWhenEval.IfThenEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); context.append("WHEN"); visit(context, evalNode.getCondition(), stack); context.append("THEN"); visit(context, evalNode.getResult(), stack); stack.pop(); return evalNode; }
@Override protected EvalNode visitIfThen(EvalCodeGenContext context, CaseWhenEval.IfThenEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); visit(context, evalNode.getCondition(), stack); visit(context, evalNode.getResult(), stack); stack.pop(); return evalNode; }
@Override protected EvalNode visitIfThen(Context context, CaseWhenEval.IfThenEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); context.append("WHEN"); visit(context, evalNode.getCondition(), stack); context.append("THEN"); visit(context, evalNode.getResult(), stack); stack.pop(); return evalNode; }
@Override public RESULT visitIfThen(CONTEXT context, CaseWhenEval.IfThenEval evalNode, Stack<EvalNode> stack) { RESULT result; stack.push(evalNode); result = visit(context, evalNode.getCondition(), stack); visit(context, evalNode.getResult(), stack); stack.pop(); return result; }
@Override protected EvalNode visitIfThen(EvalCodeGenContext context, CaseWhenEval.IfThenEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); visit(context, evalNode.getCondition(), stack); visit(context, evalNode.getResult(), stack); stack.pop(); return evalNode; }