public MethodRef toMethodRef() { return new MethodRef(tag, owner.getInternalName(), signature.name, signature.desc); }
public MethodRef toMethodRef() { return new MethodRef(tag, owner.getInternalName(), signature.name, signature.desc); }
@Override public void visitOuterClass(String owner, String name, String desc) { MethodRef method = analyzer.getRenamedLambdaMethod(new MethodRef(0, owner, name, desc)); super.visitOuterClass(method.owner, method.name, method.desc); } }
@Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { MethodRef method = new MethodRef(Handles.accessToTag(access, true), owner, name, desc); // XXX: duplicates code in net.orfjackal.retrolambda.lambdas.BackportLambdaInvocations.visitMethod() if (LambdaNaming.isBodyMethod(access, name) && Flags.isPrivateMethod(access) && Flags.isInstanceMethod(access)) { desc = Types.prependArgumentType(Type.getObjectType(owner), desc); // add 'this' as first parameter renamedLambdaMethods.put(method, new MethodRef(H_INVOKESTATIC, owner, name, desc)); } return null; } }, ClassReader.SKIP_CODE);
@Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { MethodRef method = new MethodRef(Handles.opcodeToTag(opcode), owner, name, desc); method = analyzer.getMethodCallTarget(method); super.visitMethodInsn(method.getOpcode(), method.owner, method.name, method.desc, itf); } }
@Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { MethodRef method = new MethodRef(Handles.opcodeToTag(opcode), owner, name, desc); method = analyzer.getMethodCallTarget(method); super.visitMethodInsn(method.getOpcode(), method.owner, method.name, method.desc, itf); } }
@Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { int tag; if (isConstructor(name)) { tag = H_INVOKESPECIAL; } else if (isStaticMethod(access)) { tag = H_INVOKESTATIC; } else { tag = H_INVOKEVIRTUAL; } c.addMethod(access, new MethodRef(tag, owner, name, desc), new MethodKind.Implemented()); return null; }
@Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { MethodRef method = new MethodRef(Handles.accessToTag(access, true), owner, name, desc); if (isAbstractMethod(access)) { c.addMethod(access, method, new MethodKind.Abstract()); } else if (isDefaultMethod(access)) { MethodRef defaultImpl = new MethodRef(H_INVOKESTATIC, companion, name, Bytecode.prependArgumentType(desc, Type.getObjectType(owner))); c.enableCompanionClass(); c.addMethod(access, method, new MethodKind.Default(defaultImpl)); } else if (isInstanceLambdaImplMethod(access)) { relocatedMethods.put(method, new MethodRef(H_INVOKESTATIC, companion, name, Bytecode.prependArgumentType(desc, Type.getObjectType(owner)))); c.enableCompanionClass(); } else if (isStaticMethod(access) && !isStaticInitializer(name, desc, access)) { relocatedMethods.put(method, new MethodRef(H_INVOKESTATIC, companion, name, desc)); c.enableCompanionClass(); } return null; } }, ClassReader.SKIP_CODE);
@Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { int tag; if (isConstructor(name)) { tag = H_INVOKESPECIAL; } else if (isStaticMethod(access)) { tag = H_INVOKESTATIC; } else { tag = H_INVOKEVIRTUAL; } c.addMethod(access, new MethodRef(tag, owner, name, desc), new MethodKind.Implemented()); return null; }
@Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { MethodRef method = new MethodRef(Handles.accessToTag(access, true), owner, name, desc); if (isAbstractMethod(access)) { c.addMethod(access, method, new MethodKind.Abstract()); } else if (isDefaultMethod(access)) { MethodRef defaultImpl = new MethodRef(H_INVOKESTATIC, companion, name, Bytecode.prependArgumentType(desc, Type.getObjectType(owner))); c.enableCompanionClass(); c.addMethod(access, method, new MethodKind.Default(defaultImpl)); } else if (isInstanceLambdaImplMethod(access)) { relocatedMethods.put(method, new MethodRef(H_INVOKESTATIC, companion, name, Bytecode.prependArgumentType(desc, Type.getObjectType(owner)))); c.enableCompanionClass(); } else if (isStaticMethod(access) && !isStaticInitializer(name, desc, access)) { relocatedMethods.put(method, new MethodRef(H_INVOKESTATIC, companion, name, desc)); c.enableCompanionClass(); } return null; } }, ClassReader.SKIP_CODE);