private void visitTupleExpression(TupleExpression expression, boolean useWrapper) { int size = expression.getExpressions().size(); helper.pushConstant(size); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); for (int i = 0; i < size; i++) { mv.visitInsn(DUP); helper.pushConstant(i); Expression argument = expression.getExpression(i); visitAndAutoboxBoolean(argument); if (useWrapper && argument instanceof CastExpression) loadWrapper(argument); mv.visitInsn(AASTORE); } }
private void visitTupleExpression(TupleExpression expression, boolean useWrapper) { int size = expression.getExpressions().size(); helper.pushConstant(size); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); for (int i = 0; i < size; i++) { mv.visitInsn(DUP); helper.pushConstant(i); Expression argument = expression.getExpression(i); visitAndAutoboxBoolean(argument); if (useWrapper && argument instanceof CastExpression) loadWrapper(argument); mv.visitInsn(AASTORE); } }
public static void genLoadParameters(int argumentIndex, MethodVisitor mv, BytecodeHelper helper, Method method) { Class<?>[] parameters = method.getParameterTypes(); int size = parameters.length; for (int i = 0; i < size; i++) { // unpack argument from Object[] mv.visitVarInsn(Opcodes.ALOAD, argumentIndex); helper.pushConstant(i); mv.visitInsn(Opcodes.AALOAD); // cast argument to parameter class, inclusive unboxing // for methods with primitive types Class type = parameters[i]; if (type.isPrimitive()) { helper.unbox(type); } else { helper.doCast(type); } } }
public void visitGStringExpression(GStringExpression expression) { mv.visitTypeInsn(NEW, "org/codehaus/groovy/runtime/GStringImpl"); mv.visitInsn(DUP); int size = expression.getValues().size(); helper.pushConstant(size); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); for (int i = 0; i < size; i++) { mv.visitInsn(DUP); helper.pushConstant(i); visitAndAutoboxBoolean(expression.getValue(i)); mv.visitInsn(AASTORE); } List strings = expression.getStrings(); size = strings.size(); helper.pushConstant(size); mv.visitTypeInsn(ANEWARRAY, "java/lang/String"); for (int i = 0; i < size; i++) { mv.visitInsn(DUP); helper.pushConstant(i); mv.visitLdcInsn(((ConstantExpression) strings.get(i)).getValue()); mv.visitInsn(AASTORE); } mv.visitMethodInsn(INVOKESPECIAL, "org/codehaus/groovy/runtime/GStringImpl", "<init>", "([Ljava/lang/Object;[Ljava/lang/String;)V"); }
public static void genLoadParameters(int argumentIndex, MethodVisitor mv, BytecodeHelper helper, Method method) { Class<?>[] parameters = method.getParameterTypes(); int size = parameters.length; for (int i = 0; i < size; i++) { // unpack argument from Object[] mv.visitVarInsn(Opcodes.ALOAD, argumentIndex); helper.pushConstant(i); mv.visitInsn(Opcodes.AALOAD); // cast argument to parameter class, inclusive unboxing // for methods with primitive types Class type = parameters[i]; if (type.isPrimitive()) { helper.unbox(type); } else { helper.doCast(type); } } }
public void visitGStringExpression(GStringExpression expression) { mv.visitTypeInsn(NEW, "org/codehaus/groovy/runtime/GStringImpl"); mv.visitInsn(DUP); int size = expression.getValues().size(); helper.pushConstant(size); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); for (int i = 0; i < size; i++) { mv.visitInsn(DUP); helper.pushConstant(i); visitAndAutoboxBoolean(expression.getValue(i)); mv.visitInsn(AASTORE); } List strings = expression.getStrings(); size = strings.size(); helper.pushConstant(size); mv.visitTypeInsn(ANEWARRAY, "java/lang/String"); for (int i = 0; i < size; i++) { mv.visitInsn(DUP); helper.pushConstant(i); mv.visitLdcInsn(((ConstantExpression) strings.get(i)).getValue()); mv.visitInsn(AASTORE); } mv.visitMethodInsn(INVOKESPECIAL, "org/codehaus/groovy/runtime/GStringImpl", "<init>", "([Ljava/lang/Object;[Ljava/lang/String;)V"); }
public void visitMapExpression(MapExpression expression) { List entries = expression.getMapEntryExpressions(); int size = entries.size(); helper.pushConstant(size * 2); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); int i = 0; for (Iterator iter = entries.iterator(); iter.hasNext();) { Object object = iter.next(); MapEntryExpression entry = (MapEntryExpression) object; mv.visitInsn(DUP); helper.pushConstant(i++); visitAndAutoboxBoolean(entry.getKeyExpression()); mv.visitInsn(AASTORE); mv.visitInsn(DUP); helper.pushConstant(i++); visitAndAutoboxBoolean(entry.getValueExpression()); mv.visitInsn(AASTORE); } createMapMethod.call(mv); }
public void visitMapExpression(MapExpression expression) { List entries = expression.getMapEntryExpressions(); int size = entries.size(); helper.pushConstant(size * 2); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); int i = 0; for (Iterator iter = entries.iterator(); iter.hasNext();) { Object object = iter.next(); MapEntryExpression entry = (MapEntryExpression) object; mv.visitInsn(DUP); helper.pushConstant(i++); visitAndAutoboxBoolean(entry.getKeyExpression()); mv.visitInsn(AASTORE); mv.visitInsn(DUP); helper.pushConstant(i++); visitAndAutoboxBoolean(entry.getValueExpression()); mv.visitInsn(AASTORE); } createMapMethod.call(mv); }
protected static void loadParameters(CachedMethod method, int argumentIndex, MethodVisitor mv) { CachedClass[] parameters = method.getParameterTypes(); int size = parameters.length-1; for (int i = 0; i < size; i++) { // unpack argument from Object[] mv.visitVarInsn(ALOAD, argumentIndex); helper.pushConstant(i); mv.visitInsn(AALOAD); // cast argument to parameter class, inclusive unboxing // for methods with primitive types Class type = parameters[i+1].getTheClass(); if (type.isPrimitive()) { helper.unbox(type); } else { helper.doCast(type); } } } }
protected static void loadParameters(CachedMethod method, int argumentIndex, MethodVisitor mv) { CachedClass[] parameters = method.getParameterTypes(); int size = parameters.length-1; for (int i = 0; i < size; i++) { // unpack argument from Object[] mv.visitVarInsn(ALOAD, argumentIndex); helper.pushConstant(i); mv.visitInsn(AALOAD); // cast argument to parameter class, inclusive unboxing // for methods with primitive types Class type = parameters[i+1].getTheClass(); if (type.isPrimitive()) { helper.unbox(type); } else { helper.doCast(type); } } } }
public void visitListExpression(ListExpression expression) { onLineNumber(expression,"ListExpression" ); int size = expression.getExpressions().size(); boolean containsSpreadExpression = containsSpreadExpression(expression); if (!containsSpreadExpression) { helper.pushConstant(size); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); for (int i = 0; i < size; i++) { mv.visitInsn(DUP); helper.pushConstant(i); visitAndAutoboxBoolean(expression.getExpression(i)); mv.visitInsn(AASTORE); } } else { despreadList(expression.getExpressions(), false); } createListMethod.call(mv); }
public void visitListExpression(ListExpression expression) { onLineNumber(expression,"ListExpression" ); int size = expression.getExpressions().size(); boolean containsSpreadExpression = containsSpreadExpression(expression); if (!containsSpreadExpression) { helper.pushConstant(size); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); for (int i = 0; i < size; i++) { mv.visitInsn(DUP); helper.pushConstant(i); visitAndAutoboxBoolean(expression.getExpression(i)); mv.visitInsn(AASTORE); } } else { despreadList(expression.getExpressions(), false); } createListMethod.call(mv); }
private void visitTupleExpression(TupleExpression expression, boolean useWrapper) { int size = expression.getExpressions().size(); helper.pushConstant(size); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); for (int i = 0; i < size; i++) { mv.visitInsn(DUP); helper.pushConstant(i); Expression argument = expression.getExpression(i); visitAndAutoboxBoolean(argument); if (useWrapper && argument instanceof CastExpression) loadWrapper(argument); mv.visitInsn(AASTORE); } }
public void visitMapExpression(MapExpression expression) { List entries = expression.getMapEntryExpressions(); int size = entries.size(); helper.pushConstant(size * 2); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); int i = 0; for (Iterator iter = entries.iterator(); iter.hasNext();) { Object object = iter.next(); MapEntryExpression entry = (MapEntryExpression) object; mv.visitInsn(DUP); helper.pushConstant(i++); visitAndAutoboxBoolean(entry.getKeyExpression()); mv.visitInsn(AASTORE); mv.visitInsn(DUP); helper.pushConstant(i++); visitAndAutoboxBoolean(entry.getValueExpression()); mv.visitInsn(AASTORE); } createMapMethod.call(mv); }
public void visitGStringExpression(GStringExpression expression) { mv.visitTypeInsn(NEW, "org/codehaus/groovy/runtime/GStringImpl"); mv.visitInsn(DUP); int size = expression.getValues().size(); helper.pushConstant(size); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); for (int i = 0; i < size; i++) { mv.visitInsn(DUP); helper.pushConstant(i); visitAndAutoboxBoolean(expression.getValue(i)); mv.visitInsn(AASTORE); } List strings = expression.getStrings(); size = strings.size(); helper.pushConstant(size); mv.visitTypeInsn(ANEWARRAY, "java/lang/String"); for (int i = 0; i < size; i++) { mv.visitInsn(DUP); helper.pushConstant(i); mv.visitLdcInsn(((ConstantExpression) strings.get(i)).getValue()); mv.visitInsn(AASTORE); } mv.visitMethodInsn(INVOKESPECIAL, "org/codehaus/groovy/runtime/GStringImpl", "<init>", "([Ljava/lang/Object;[Ljava/lang/String;)V"); }
protected void loadParameters(CachedMethod method, int argumentIndex, MethodVisitor mv) { CachedClass[] parameters = method.getParameterTypes(); int size = parameters.length; for (int i = 0; i < size; i++) { // unpack argument from Object[] mv.visitVarInsn(ALOAD, argumentIndex); helper.pushConstant(i); mv.visitInsn(AALOAD); // cast argument to parameter class, inclusive unboxing // for methods with primitive types Class type = parameters[i].getTheClass(); if (type.isPrimitive()) { helper.unbox(type); } else { helper.doCast(type); } } } }
public void visitListExpression(ListExpression expression) { onLineNumber(expression,"ListExpression" ); int size = expression.getExpressions().size(); boolean containsSpreadExpression = containsSpreadExpression(expression); if (!containsSpreadExpression) { helper.pushConstant(size); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); for (int i = 0; i < size; i++) { mv.visitInsn(DUP); helper.pushConstant(i); visitAndAutoboxBoolean(expression.getExpression(i)); mv.visitInsn(AASTORE); } } else { despreadList(expression.getExpressions(), false); } createListMethod.call(mv); }
public void visitRangeExpression(RangeExpression expression) { expression.getFrom().visit(this); expression.getTo().visit(this); helper.pushConstant(expression.isInclusive()); createRangeMethod.call(mv); }
public void visitRangeExpression(RangeExpression expression) { expression.getFrom().visit(this); expression.getTo().visit(this); helper.pushConstant(expression.isInclusive()); createRangeMethod.call(mv); }
public void visitRangeExpression(RangeExpression expression) { expression.getFrom().visit(this); expression.getTo().visit(this); helper.pushConstant(expression.isInclusive()); createRangeMethod.call(mv); }