@Override public void visit(final GroovyCodeVisitor visitor) { if (visitor instanceof AsmClassGenerator) { acg = (AsmClassGenerator) visitor; } else { originalCall.visit(visitor); } super.visit(visitor); } @Override
Expression keyExpression = staticCompilationTransformer.transform(entryExpression.getKeyExpression()); Expression valueExpression = staticCompilationTransformer.transform(entryExpression.getValueExpression()); BinaryExpression bexp = new BinaryExpression(new PropertyExpression(new BytecodeExpression() { @Override public void visit(final MethodVisitor mv) {
thisLoader.setType(CLOSURE_TYPE); Expression pexp = new PropertyExpression(thisLoader, new ConstantExpression(props[0]), safe); for (int i = 1, propsLength = props.length; i < propsLength; i++) {
bytecodeExpression.visit(controller.getAcg()); controller.getOperandStack().remove(1); return;
bytecodeExpression.visit(controller.getAcg()); controller.getOperandStack().remove(1); return;
@Override public void writeNotExpression(final NotExpression expression) { TypeChooser typeChooser = controller.getTypeChooser(); Expression subExpression = expression.getExpression(); ClassNode classNode = controller.getClassNode(); if (typeChooser.resolveType(subExpression, classNode) == boolean_TYPE) { subExpression.visit(controller.getAcg()); controller.getOperandStack().doGroovyCast(boolean_TYPE); BytecodeExpression bytecodeExpression = new BytecodeExpression() { @Override public void visit(final MethodVisitor mv) { Label ne = new Label(); mv.visitJumpInsn(IFNE, ne); mv.visitInsn(ICONST_1); Label out = new Label(); mv.visitJumpInsn(GOTO, out); mv.visitLabel(ne); mv.visitInsn(ICONST_0); mv.visitLabel(out); } }; bytecodeExpression.visit(controller.getAcg()); controller.getOperandStack().remove(1); return; } super.writeNotExpression(expression); }
rhsValueLoader.visit(acg); operandStack.remove(1); compileStack.popLHS(); int mark = operandStack.getStackLength(); rhsValueLoader.visit(acg); TypeChooser typeChooser = controller.getTypeChooser(); ClassNode targetType = typeChooser.resolveType(leftExpression, controller.getClassNode()); rhsValueLoader.visit(acg); compileStack.removeVar(rhsValueId);
public void visitBytecodeExpression(BytecodeExpression cle) { cle.visit(mv); }
public void visitBytecodeExpression(BytecodeExpression cle) { cle.visit(mv); }
rhsValueLoader.visit(acg); operandStack.remove(1); compileStack.popLHS(); int mark = operandStack.getStackLength(); rhsValueLoader.visit(acg); ClassNode type = controller.getTypeChooser().resolveType(leftExpression, controller.getClassNode()); operandStack.doGroovyCast(type); rhsValueLoader.visit(acg); compileStack.removeVar(rhsValueId);