Esempio n. 1
0
 public void createBCode(CodeGeneration gen) {
   super.createBCode(gen);
   int elseBranch = else_branch_label();
   int thenBranch = then_branch_label();
   int endBranch = hostType().constantPool().newLabel();
   getCondition().emitEvalBranch(gen);
   gen.addLabel(thenBranch);
   // if(getCondition().canBeTrue()) {
   getThen().createBCode(gen);
   if (getThen().canCompleteNormally() && hasElse() /*&& getCondition().canBeFalse()*/)
     gen.emitGoto(endBranch);
   // }
   gen.addLabel(elseBranch);
   if (hasElse() /*&& getCondition().canBeFalse()*/) getElse().createBCode(gen);
   gen.addLabel(endBranch);
 }