public void visitDoWhileLoop(DoWhileStatement loop) { onLineNumber(loop, "visitDoWhileLoop"); visitStatement(loop); compileStack.pushLoop(loop.getStatementLabel()); Label breakLabel = compileStack.getBreakLabel(); Label continueLabel = compileStack.getContinueLabel(); mv.visitLabel(continueLabel); loop.getLoopBlock().visit(this); loop.getBooleanExpression().visit(this); mv.visitJumpInsn(IFEQ, continueLabel); mv.visitLabel(breakLabel); compileStack.pop(); }
public void visitDoWhileLoop(DoWhileStatement loop) { onLineNumber(loop, "visitDoWhileLoop"); visitStatement(loop); compileStack.pushLoop(loop.getStatementLabel()); Label breakLabel = compileStack.getBreakLabel(); Label continueLabel = compileStack.getContinueLabel(); mv.visitLabel(continueLabel); loop.getLoopBlock().visit(this); loop.getBooleanExpression().visit(this); mv.visitJumpInsn(IFEQ, continueLabel); mv.visitLabel(breakLabel); compileStack.pop(); }
private void visitForLoopWithClosureList(ForStatement loop) { compileStack.pushLoop(loop.getVariableScope(), loop.getStatementLabel());
private void visitForLoopWithClosureList(ForStatement loop) { compileStack.pushLoop(loop.getVariableScope(), loop.getStatementLabel());
public void visitWhileLoop(WhileStatement loop) { onLineNumber(loop, "visitWhileLoop"); visitStatement(loop); compileStack.pushLoop(loop.getStatementLabel()); Label continueLabel = compileStack.getContinueLabel(); Label breakLabel = compileStack.getBreakLabel(); mv.visitLabel(continueLabel); Expression bool = loop.getBooleanExpression(); boolean boolHandled = false; if (bool instanceof ConstantExpression) { ConstantExpression constant = (ConstantExpression) bool; if (constant.getValue()==Boolean.TRUE) { boolHandled = true; // do nothing } else if (constant.getValue()==Boolean.FALSE) { boolHandled = true; mv.visitJumpInsn(GOTO, breakLabel); } } if(!boolHandled) { bool.visit(this); mv.visitJumpInsn(IFEQ, breakLabel); } loop.getLoopBlock().visit(this); mv.visitJumpInsn(GOTO, continueLabel); mv.visitLabel(breakLabel); compileStack.pop(); }
public void visitWhileLoop(WhileStatement loop) { onLineNumber(loop, "visitWhileLoop"); visitStatement(loop); compileStack.pushLoop(loop.getStatementLabel()); Label continueLabel = compileStack.getContinueLabel(); Label breakLabel = compileStack.getBreakLabel(); mv.visitLabel(continueLabel); Expression bool = loop.getBooleanExpression(); boolean boolHandled = false; if (bool instanceof ConstantExpression) { ConstantExpression constant = (ConstantExpression) bool; if (constant.getValue()==Boolean.TRUE) { boolHandled = true; // do nothing } else if (constant.getValue()==Boolean.FALSE) { boolHandled = true; mv.visitJumpInsn(GOTO, breakLabel); } } if(!boolHandled) { bool.visit(this); mv.visitJumpInsn(IFEQ, breakLabel); } loop.getLoopBlock().visit(this); mv.visitJumpInsn(GOTO, continueLabel); mv.visitLabel(breakLabel); compileStack.pop(); }
public void visitDoWhileLoop(DoWhileStatement loop) { onLineNumber(loop, "visitDoWhileLoop"); visitStatement(loop); compileStack.pushLoop(loop.getStatementLabel()); Label breakLabel = compileStack.getBreakLabel(); Label continueLabel = compileStack.getContinueLabel(); mv.visitLabel(continueLabel); loop.getLoopBlock().visit(this); loop.getBooleanExpression().visit(this); mv.visitJumpInsn(IFEQ, continueLabel); mv.visitLabel(breakLabel); compileStack.pop(); }
compileStack.pushLoop(loop.getVariableScope(), loop.getStatementLabel());
compileStack.pushLoop(loop.getVariableScope(), loop.getStatementLabel());
private void visitForLoopWithClosureList(ForStatement loop) { compileStack.pushLoop(loop.getVariableScope(), loop.getStatementLabel());
public void visitWhileLoop(WhileStatement loop) { onLineNumber(loop, "visitWhileLoop"); visitStatement(loop); compileStack.pushLoop(loop.getStatementLabel()); Label continueLabel = compileStack.getContinueLabel(); Label breakLabel = compileStack.getBreakLabel(); mv.visitLabel(continueLabel); Expression bool = loop.getBooleanExpression(); boolean boolHandled = false; if (bool instanceof ConstantExpression) { ConstantExpression constant = (ConstantExpression) bool; if (constant.getValue()==Boolean.TRUE) { boolHandled = true; // do nothing } else if (constant.getValue()==Boolean.FALSE) { boolHandled = true; mv.visitJumpInsn(GOTO, breakLabel); } } if(!boolHandled) { bool.visit(this); mv.visitJumpInsn(IFEQ, breakLabel); } loop.getLoopBlock().visit(this); mv.visitJumpInsn(GOTO, continueLabel); mv.visitLabel(breakLabel); compileStack.pop(); }
compileStack.pushLoop(loop.getVariableScope(), loop.getStatementLabel());