public static void genCallWithFixedParams(ClassWriter cw, String name, final String superClass, CachedMethod cachedMethod, String receiverType ) { if (cachedMethod.getParamsCount() > 4) return; StringBuilder pdescb = new StringBuilder(); final int pc = cachedMethod.getParamsCount(); for (int i = 0; i != pc; ++i) pdescb.append("Ljava/lang/Object;"); writeMethod(cw,name,pc+2,superClass,cachedMethod,receiverType,pdescb.toString(),false); }
private static void createMetaMethods(final Class extensionClass, final List<MetaMethod> metaMethods, final boolean isStatic) { CachedClass cachedClass = ReflectionCache.getCachedClass(extensionClass); CachedMethod[] methods = cachedClass.getMethods(); for (CachedMethod method : methods) { if (method.isStatic() && method.isPublic() && method.getParamsCount() > 0) { // an extension method is found metaMethods.add(isStatic?new NewStaticMetaMethod(method) : new NewInstanceMetaMethod(method)); } } }
private static void createIsValidMethodMethod(CachedMethod method, ClassWriter cw, String className) { MethodVisitor mv; if (method.getParamsCount() == 2 && method.getParameterTypes()[0].isNumber && method.getParameterTypes()[1].isNumber) {
mv = cw.visitMethod(ACC_PUBLIC + ACC_FINAL, "doMethodInvoke", "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;", null, null); mv.visitCode(); if (method.getParamsCount() == 2 && method.getParameterTypes()[0].isNumber && method.getParameterTypes()[1].isNumber) { mv.visitVarInsn(ALOAD, 1); BytecodeHelper.doCast(mv, method.getParameterTypes()[0].getTheClass());
public static void genCallWithFixedParams(ClassWriter cw, String name, final String superClass, CachedMethod cachedMethod, String receiverType ) { if (cachedMethod.getParamsCount() > 4) return; StringBuilder pdescb = new StringBuilder(); final int pc = cachedMethod.getParamsCount(); for (int i = 0; i != pc; ++i) pdescb.append("Ljava/lang/Object;"); writeMethod(cw,name,pc+2,superClass,cachedMethod,receiverType,pdescb.toString(),false); }
public static void genCallWithFixedParams(ClassWriter cw, String name, final String superClass, CachedMethod cachedMethod, String receiverType ) { if (cachedMethod.getParamsCount() > 4) return; StringBuilder pdescb = new StringBuilder(); final int pc = cachedMethod.getParamsCount(); for (int i = 0; i != pc; ++i) pdescb.append("Ljava/lang/Object;"); writeMethod(cw,name,pc+2,superClass,cachedMethod,receiverType,pdescb.toString(),false); }
public static void genCallWithFixedParams(ClassWriter cw, String name, final String superClass, CachedMethod cachedMethod, String receiverType ) { if (cachedMethod.getParamsCount() > 4) return; StringBuilder pdescb = new StringBuilder(); final int pc = cachedMethod.getParamsCount(); for (int i = 0; i != pc; ++i) pdescb.append("Ljava/lang/Object;"); writeMethod(cw,name,pc+2,superClass,cachedMethod,receiverType,pdescb.toString(),false); }
helper = new BytecodeHelper(mv); mv.visitCode(); if (method.getParamsCount() == 2 && method.getParameterTypes()[0].isNumber && method.getParameterTypes()[1].isNumber) { mv.visitVarInsn(ALOAD,1); helper.doCast(method.getParameterTypes()[0].getTheClass()); mv.visitEnd(); if (method.getParamsCount() == 2 && method.getParameterTypes()[0].isNumber && method.getParameterTypes()[1].isNumber) {
helper = new BytecodeHelper(mv); mv.visitCode(); if (method.getParamsCount() == 2 && method.getParameterTypes()[0].isNumber && method.getParameterTypes()[1].isNumber) { mv.visitVarInsn(ALOAD,1); helper.doCast(method.getParameterTypes()[0].getTheClass()); mv.visitEnd(); if (method.getParamsCount() == 2 && method.getParameterTypes()[0].isNumber && method.getParameterTypes()[1].isNumber) {
private static void createIsValidMethodMethod(CachedMethod method, ClassWriter cw, String className) { MethodVisitor mv; if (method.getParamsCount() == 2 && method.getParameterTypes()[0].isNumber && method.getParameterTypes()[1].isNumber) {
mv = cw.visitMethod(ACC_PUBLIC + ACC_FINAL, "doMethodInvoke", "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;", null, null); mv.visitCode(); if (method.getParamsCount() == 2 && method.getParameterTypes()[0].isNumber && method.getParameterTypes()[1].isNumber) { mv.visitVarInsn(ALOAD, 1); BytecodeHelper.doCast(mv, method.getParameterTypes()[0].getTheClass());