public void invokeStatic(Type type, Method method) { adapter.invokestatic(type.getInternalName(), method.getName(), method.getDescriptor()); }
public void invokeVirtual(Type type, Method method) { adapter.invokevirtual(type.getInternalName(), method.getName(), method.getDescriptor()); }
public void invokeStatic(Type type, Method method) { adapter.invokestatic(type.getInternalName(), method.getName(), method.getDescriptor()); }
public void invokeVirtual(Type type, Method method) { adapter.invokevirtual(type.getInternalName(), method.getName(), method.getDescriptor()); }
public void invokeStatic(Type type, Method method) { adapter.invokestatic(type.getInternalName(), method.getName(), method.getDescriptor()); }
public void invokeStatic(Type type, Method method) { adapter.invokestatic(type.getInternalName(), method.getName(), method.getDescriptor()); }
public void invokeVirtual(Type type, Method method) { adapter.invokevirtual(type.getInternalName(), method.getName(), method.getDescriptor()); }
public void invokeVirtual(Type type, Method method) { adapter.invokevirtual(type.getInternalName(), method.getName(), method.getDescriptor()); }
public void pushmethod(String name, int arity) { Method m; switch (arity) { case 0: case 1: case 2: case 3: m = new Method(name, JVM.OBJECT_TYPE, ARGS[arity]); break; default: throw new RuntimeException("Unsupported arity " + arity + " for " + name); } methodStack.push(new MethodData(new SkinnyMethodAdapter(cls, Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, m.getName(), m.getDescriptor(), null, null), arity)); }
public void pushmethod(String name, int arity) { Method m; switch (arity) { case 0: case 1: case 2: case 3: m = new Method(name, JVM.OBJECT_TYPE, ARGS[arity]); break; default: throw new RuntimeException("Unsupported arity " + arity + " for " + name); } methodStack.push(new MethodData(new SkinnyMethodAdapter(cls, Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, m.getName(), m.getDescriptor(), null, null), arity)); }
public void pushmethod(String name, IRScope scope, Signature signature, boolean specificArity) { Method m = new Method(name, Type.getType(signature.type().returnType()), IRRuntimeHelpers.typesFromSignature(signature)); SkinnyMethodAdapter adapter = new SkinnyMethodAdapter(cls, Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, m.getName(), m.getDescriptor(), null, null); methodStack.push( new MethodData( new IRBytecodeAdapter7(adapter, signature, this), scope, signature, specificArity ? scope.getStaticScope().getSignature().required() : -1) ); }
public void pushmethod(String name, IRScope scope, Signature signature, boolean specificArity) { Method m = new Method(name, Type.getType(signature.type().returnType()), IRRuntimeHelpers.typesFromSignature(signature)); SkinnyMethodAdapter adapter = new SkinnyMethodAdapter(cls, Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, m.getName(), m.getDescriptor(), null, null); methodStack.push( new MethodData( new IRBytecodeAdapter6(adapter, signature, this), scope, signature, specificArity ? scope.getStaticScope().getSignature().required() : -1) ); } }
public void pushmethod(String name, IRScope scope, Signature signature, boolean specificArity) { Method m = new Method(name, Type.getType(signature.type().returnType()), IRRuntimeHelpers.typesFromSignature(signature)); SkinnyMethodAdapter adapter = new SkinnyMethodAdapter(cls, Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, m.getName(), m.getDescriptor(), null, null); methodStack.push( new MethodData( new IRBytecodeAdapter6(adapter, signature, this), scope, signature, specificArity ? scope.getStaticScope().getSignature().required() : -1) ); } }
public void pushmethod(String name, IRScope scope, Signature signature, boolean specificArity) { Method m = new Method(name, Type.getType(signature.type().returnType()), IRRuntimeHelpers.typesFromSignature(signature)); SkinnyMethodAdapter adapter = new SkinnyMethodAdapter(cls, Opcodes.ACC_PUBLIC | Opcodes.ACC_STATIC, m.getName(), m.getDescriptor(), null, null); methodStack.push( new MethodData( new IRBytecodeAdapter7(adapter, signature, this), scope, signature, specificArity ? scope.getStaticScope().getSignature().required() : -1) ); }
private static Class[] generateConstructor(Type selfType, Constructor constructor, ClassVisitor cw) { Class[] superConstructorParameterTypes = constructor.getParameterTypes(); Class[] newConstructorParameterTypes = new Class[superConstructorParameterTypes.length + 1]; ArraySupport.copy(superConstructorParameterTypes, newConstructorParameterTypes, 0, superConstructorParameterTypes.length); newConstructorParameterTypes[superConstructorParameterTypes.length] = JavaProxyInvocationHandler.class; int access = Opcodes.ACC_PUBLIC; String name1 = "<init>"; String signature = null; Class[] superConstructorExceptions = constructor.getExceptionTypes(); boolean superConstructorVarArgs = constructor.isVarArgs(); org.objectweb.asm.commons.Method super_m = new org.objectweb.asm.commons.Method( name1, Type.VOID_TYPE, toTypes(superConstructorParameterTypes)); org.objectweb.asm.commons.Method m = new org.objectweb.asm.commons.Method( name1, Type.VOID_TYPE, toTypes(newConstructorParameterTypes)); String[] exceptionNames = toInternalNames( superConstructorExceptions ); MethodVisitor mv = cw.visitMethod(access, m.getName(), m.getDescriptor(), signature, exceptionNames); // marking with @SafeVarargs so that we can correctly detect proxied var-arg constructors : if ( superConstructorVarArgs ) mv.visitAnnotation(Type.getDescriptor(VarArgs.class), true); GeneratorAdapter ga = new GeneratorAdapter(access, m, mv); ga.loadThis(); ga.loadArgs(0, superConstructorParameterTypes.length); ga.invokeConstructor(toType(constructor.getDeclaringClass()), super_m); ga.loadThis(); ga.loadArg(superConstructorParameterTypes.length); ga.putField(selfType, INVOCATION_HANDLER_FIELD_NAME, INVOCATION_HANDLER_TYPE); // do a void return ga.returnValue(); ga.endMethod(); return newConstructorParameterTypes; }
private static Class[] generateConstructor(Type selfType, Constructor constructor, ClassVisitor cw) { Class[] superConstructorParameterTypes = constructor.getParameterTypes(); Class[] newConstructorParameterTypes = new Class[superConstructorParameterTypes.length + 1]; ArraySupport.copy(superConstructorParameterTypes, newConstructorParameterTypes, 0, superConstructorParameterTypes.length); newConstructorParameterTypes[superConstructorParameterTypes.length] = JavaProxyInvocationHandler.class; int access = Opcodes.ACC_PUBLIC; String name1 = "<init>"; String signature = null; Class[] superConstructorExceptions = constructor.getExceptionTypes(); boolean superConstructorVarArgs = constructor.isVarArgs(); org.objectweb.asm.commons.Method super_m = new org.objectweb.asm.commons.Method( name1, Type.VOID_TYPE, toTypes(superConstructorParameterTypes)); org.objectweb.asm.commons.Method m = new org.objectweb.asm.commons.Method( name1, Type.VOID_TYPE, toTypes(newConstructorParameterTypes)); String[] exceptionNames = toInternalNames( superConstructorExceptions ); MethodVisitor mv = cw.visitMethod(access, m.getName(), m.getDescriptor(), signature, exceptionNames); // marking with @SafeVarargs so that we can correctly detect proxied var-arg constructors : if ( superConstructorVarArgs ) mv.visitAnnotation(Type.getDescriptor(VarArgs.class), true); GeneratorAdapter ga = new GeneratorAdapter(access, m, mv); ga.loadThis(); ga.loadArgs(0, superConstructorParameterTypes.length); ga.invokeConstructor(toType(constructor.getDeclaringClass()), super_m); ga.loadThis(); ga.loadArg(superConstructorParameterTypes.length); ga.putField(selfType, INVOCATION_HANDLER_FIELD_NAME, INVOCATION_HANDLER_TYPE); // do a void return ga.returnValue(); ga.endMethod(); return newConstructorParameterTypes; }