public void invokeinterface(final String owner, final String name, final String desc) { mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, owner, name, desc); }
public void invokevirtual(final String owner, final String name, final String desc) { mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc); }
public void invokestatic(final String owner, final String name, final String desc) { mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc); }
public void invokespecial(final String owner, final String name, final String desc) { mv.visitMethodInsn(Opcodes.INVOKESPECIAL, owner, name, desc); }
@Override public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) { if (opcode == INVOKEINTERFACE) { minSize += 5; maxSize += 5; } else { minSize += 3; maxSize += 3; } if (mv != null) { mv.visitMethodInsn(opcode, owner, name, desc); } }
/** * Visits a method instruction. A method instruction is an instruction that * invokes a method. * * @param opcode * the opcode of the type instruction to be visited. This opcode * is either INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC or * INVOKEINTERFACE. * @param owner * the internal name of the method's owner class (see * {@link Type#getInternalName() getInternalName}). * @param name * the method's name. * @param desc * the method's descriptor (see {@link Type Type}). */ public void visitMethodInsn(int opcode, String owner, String name, String desc) { if (mv != null) { mv.visitMethodInsn(opcode, owner, name, desc); } }
/** * Generates an invoke method instruction. * * @param opcode the instruction's opcode. * @param type the class in which the method is defined. * @param method the method to be invoked. */ private void invokeInsn( final int opcode, final Type type, final Method method){ String owner = type.getSort() == Type.ARRAY ? type.getDescriptor() : type.getInternalName(); mv.visitMethodInsn(opcode, owner, method.getName(), method.getDescriptor()); }
final String name, final String desc) { if (mv != null) { mv.visitMethodInsn(opcode, owner, name, desc);
@Override public MethodVisitor visitMethod(final int access, final String name, final String desc, final String signature, final String[] exceptions) { MethodVisitor mv; if ("<clinit>".equals(name)) { int a = Opcodes.ACC_PRIVATE + Opcodes.ACC_STATIC; String n = prefix + counter++; mv = cv.visitMethod(a, n, desc, signature, exceptions); if (clinit == null) { clinit = cv.visitMethod(a, name, desc, null, null); } clinit.visitMethodInsn(Opcodes.INVOKESTATIC, this.name, n, desc); } else { mv = cv.visitMethod(access, name, desc, signature, exceptions); } return mv; }
/** * Generates an invoke method instruction. * * @param opcode * the instruction's opcode. * @param type * the class in which the method is defined. * @param method * the method to be invoked. */ private void invokeInsn(final int opcode, final Type type, final Method method) { String owner = type.getSort() == Type.ARRAY ? type.getDescriptor() : type.getInternalName(); mv.visitMethodInsn(opcode, owner, method.getName(), method.getDescriptor()); }
mv.visitMethodInsn(INVOKESTATIC, "clojure/lang/Keyword", "intern", "(Ljava/lang/String;)Lclojure/lang/Keyword;"); mv.visitInsn(ACONST_NULL); mv.visitMethodInsn(INVOKEINTERFACE, "clojure/lang/IPersistentMap", "valAt", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); if(k.isPrimitive()) mv.visitVarInsn(ALOAD, 0); mv.visitLdcInsn(bName); mv.visitMethodInsn(INVOKESTATIC, "clojure/lang/Keyword", "intern", "(Ljava/lang/String;)Lclojure/lang/Keyword;"); mv.visitMethodInsn(INVOKEINTERFACE, "clojure/lang/IPersistentMap", "without", "(Ljava/lang/Object;)Lclojure/lang/IPersistentMap;"); mv.visitVarInsn(ASTORE, 0); String n = k.getName(); mv.visitMethodInsn(INVOKEVIRTUAL, b, n+"Value", "()"+p); mv.visitMethodInsn(INVOKESTATIC, "clojure/lang/RT", "seqOrElse", "(Ljava/lang/Object;)Ljava/lang/Object;"); mv.visitMethodInsn(INVOKESPECIAL, className, "<init>", ctor.getDescriptor()); mv.visitInsn(ARETURN); mv.visitMaxs(4+fieldCount, 1+fieldCount);
@Override public void visitMethodInsn(final int opcode, final String owner, final String name, final String desc) { mv.visitMethodInsn(opcode, owner, name, desc); if (constructor) { Type[] types = Type.getArgumentTypes(desc);
mv.visitFieldInsn(opcode, iowner, iname, idesc); } else { mv.visitMethodInsn(opcode, iowner, iname, idesc);
mv.visitMethodInsn(opcode, iowner, iname, idesc);