@Override public void visit(final GroovyCodeVisitor visitor) { if (visitor instanceof AsmClassGenerator) { AsmClassGenerator generator = (AsmClassGenerator) visitor; controller = generator.getController(); } super.visit(visitor); }
@Override public void visit(final GroovyCodeVisitor visitor) { super.visit(visitor); if (visitor instanceof AsmClassGenerator) { tmp.remove(((AsmClassGenerator) visitor).getController()); } } }
@Override public void visit(final GroovyCodeVisitor visitor) { super.visit(visitor); if (visitor instanceof AsmClassGenerator) { // ignore the return of the call ((AsmClassGenerator) visitor).getController().getOperandStack().pop(); } } }
@Override public void visit(final GroovyCodeVisitor visitor) { if (visitor instanceof AsmClassGenerator) { if (variable==null) { AsmClassGenerator acg = (AsmClassGenerator) visitor; WriterController controller = acg.getController(); variable = new ExpressionAsVariableSlot(controller, expression); } variable.visit(visitor); } else { expression.visit(visitor); } }
@Override public void visit(final GroovyCodeVisitor visitor) { if (visitor instanceof AsmClassGenerator) { AsmClassGenerator acg = (AsmClassGenerator) visitor; WriterController controller = acg.getController(); MethodVisitor mv = controller.getMethodVisitor(); objectExpression.visit(acg); ClassNode top = controller.getOperandStack().getTopOperand(); if (ClassHelper.isPrimitiveType(top)) { controller.getOperandStack().pop(); mv.visitInsn(equalsNull ? ICONST_0 : ICONST_1); controller.getOperandStack().push(ClassHelper.boolean_TYPE); return; } Label zero = new Label(); mv.visitJumpInsn(equalsNull ? IFNONNULL : IFNULL, zero); mv.visitInsn(ICONST_1); Label end = new Label(); mv.visitJumpInsn(GOTO, end); mv.visitLabel(zero); mv.visitInsn(ICONST_0); mv.visitLabel(end); controller.getOperandStack().replace(ClassHelper.boolean_TYPE); } else { super.visit(visitor); } } }
@Override public void visit(final GroovyCodeVisitor visitor) { if (visitor instanceof AsmClassGenerator) { AsmClassGenerator acg = (AsmClassGenerator) visitor; WriterController controller = acg.getController(); controller.getTypeChooser().resolveType(leftExpression, controller.getClassNode()); controller.getTypeChooser().resolveType(rightExpression, controller.getClassNode()); MethodVisitor mv = controller.getMethodVisitor(); leftExpression.visit(acg); controller.getOperandStack().box(); rightExpression.visit(acg); controller.getOperandStack().box(); Label l1 = new Label(); mv.visitJumpInsn(IF_ACMPNE, l1); mv.visitInsn(ICONST_1); Label l2 = new Label(); mv.visitJumpInsn(GOTO, l2); mv.visitLabel(l1); mv.visitInsn(ICONST_0); mv.visitLabel(l2); controller.getOperandStack().replace(ClassHelper.boolean_TYPE, 2); } else { super.visit(visitor); } } }
if (visitor instanceof AsmClassGenerator) { AsmClassGenerator acg = (AsmClassGenerator) visitor; WriterController controller = acg.getController(); OperandStack os = controller.getOperandStack();
@Override public void visit(final MethodVisitor mv) { final WriterController controller = acg.getController(); final OperandStack operandStack = controller.getOperandStack(); final CompileStack compileStack = controller.getCompileStack();