List of usage examples for org.objectweb.asm Opcodes INVOKEVIRTUAL
int INVOKEVIRTUAL
To view the source code for org.objectweb.asm Opcodes INVOKEVIRTUAL.
Click Source Link
From source file:io.syncframework.optimizer.OInterceptorClassVisitor.java
License:Apache License
/** * Generates the code://from w w w . j ava2 s . c o m * * public Result _asAfter() { * return after(); * } */ public void createAfterMethod() { String signature = "()" + Type.getDescriptor(Result.class); MethodVisitor mv = cv.visitMethod(Opcodes.ACC_PUBLIC, "_asAfter", signature, null, null); Label l0 = new Label(); if (reflector.getAfter() != null) { mv.visitLabel(l0); mv.visitVarInsn(Opcodes.ALOAD, 0); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, reflector.getClazzInternalName(), "after", signature, false); mv.visitInsn(Opcodes.ARETURN); } else { mv.visitLabel(l0); mv.visitInsn(Opcodes.ACONST_NULL); mv.visitInsn(Opcodes.ARETURN); } Label l1 = new Label(); mv.visitLocalVariable("this", reflector.getClazzDescriptor(), null, l0, l1, 0); mv.visitMaxs(1, 1); mv.visitEnd(); }
From source file:io.syncframework.optimizer.OInterceptorClassVisitor.java
License:Apache License
/** * Generates the code://from w w w .j a v a2 s . c o m * * public Result _asBefore() { * return before(); * } */ public void createBeforeMethod() { String signature = "()" + Type.getDescriptor(Result.class); MethodVisitor mv = cv.visitMethod(Opcodes.ACC_PUBLIC, "_asBefore", signature, null, null); Label l0 = new Label(); if (reflector.getAfter() != null) { mv.visitLabel(l0); mv.visitVarInsn(Opcodes.ALOAD, 0); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, reflector.getClazzInternalName(), "before", signature, false); mv.visitInsn(Opcodes.ARETURN); } else { mv.visitLabel(l0); mv.visitInsn(Opcodes.ACONST_NULL); mv.visitInsn(Opcodes.ARETURN); } Label l1 = new Label(); mv.visitLocalVariable("this", reflector.getClazzDescriptor(), null, l0, l1, 0); mv.visitMaxs(1, 1); mv.visitEnd(); }
From source file:jerl.bcm.inj.impl.InjectCollection.java
License:Apache License
public void injectIDRegistration(MethodVisitor mv, int id) { // TODO: change to correct call mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); mv.visitLdcInsn("entry: " + id); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V"); }
From source file:jerl.bcm.inj.impl.InjectCollection.java
License:Apache License
public void injectSystemOut(MethodVisitor mv, String str) { mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); mv.visitLdcInsn(str);/*from w w w . ja v a 2s . co m*/ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V"); }
From source file:jerl.bcm.inj.impl.InjectCollection.java
License:Apache License
public void injectMemberFieldSystemOut(MethodVisitor mv, String clazz, String field, String type, String printType, String prefix, boolean isStatic) { mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); mv.visitLdcInsn(prefix);//from ww w.j a v a 2 s . c om mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "print", "(Ljava/lang/String;)V"); mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); if (isStatic) { mv.visitFieldInsn(Opcodes.GETSTATIC, clazz, field, type); } else { mv.visitVarInsn(Opcodes.ALOAD, 0); // this mv.visitFieldInsn(Opcodes.GETFIELD, clazz, field, type); } mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(" + printType + ")V"); }
From source file:jerl.bcm.inj.impl.InjectCollection.java
License:Apache License
public void injectMemberFieldArraySystemOut(MethodVisitor mv, String clazz, String field, String type, String printType, String prefix, boolean isStatic, int index) { mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); mv.visitLdcInsn(prefix);// w w w. j a v a2 s . co m mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "print", "(Ljava/lang/String;)V"); mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); if (isStatic) { mv.visitFieldInsn(Opcodes.GETSTATIC, clazz, field, type); } else { mv.visitVarInsn(Opcodes.ALOAD, 0); // this mv.visitFieldInsn(Opcodes.GETFIELD, clazz, field, type); } mv.visitLdcInsn(new Integer(index)); if (type.endsWith("[Z") || type.endsWith("[B")) { mv.visitInsn(Opcodes.BALOAD); } else if (type.endsWith("[C")) { mv.visitInsn(Opcodes.CALOAD); } else if (type.endsWith("[D")) { mv.visitInsn(Opcodes.DALOAD); } else if (type.endsWith("[F")) { mv.visitInsn(Opcodes.FALOAD); } else if (type.endsWith("[I")) { mv.visitInsn(Opcodes.IALOAD); } else if (type.endsWith("[J")) { mv.visitInsn(Opcodes.LALOAD); } else if (type.endsWith("[S")) { mv.visitInsn(Opcodes.SALOAD); } else { mv.visitInsn(Opcodes.AALOAD); } mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(" + printType + ")V"); }
From source file:jerl.bcm.inj.impl.InjectCollection.java
License:Apache License
public void injectSystemOutCurThread(MethodVisitor mv, String str) { mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); mv.visitLdcInsn(str);//from ww w .j a v a 2 s.c o m mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "print", "(Ljava/lang/String;)V"); mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Thread", "currentThread", "()Ljava/lang/Thread;"); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/Object;)V"); }
From source file:jerl.bcm.inj.impl.MethodExceptionHandlerPrintStackTrace.java
License:Apache License
@Override public void inject(MethodVisitor mv) { mv.visitInsn(Opcodes.DUP);/* w w w .j a va 2 s .co m*/ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Throwable", "printStackTrace", "()V"); }
From source file:jerl.semc.MethodEntryLog.java
License:Apache License
public static void injectSEMCLogging(MethodVisitor mv, String logMsg, String className) { mv.visitFieldInsn(Opcodes.GETSTATIC, className, FieldAddSEMCLog.LOG_FIELD_NAME, "L" + FieldAddSEMCLog.LOG_CLASS_NAME + ";"); mv.visitLdcInsn(logMsg);//from w ww. j ava2 s . c o m mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, FieldAddSEMCLog.LOG_CLASS_NAME, "trace", "(Ljava/lang/String;)V"); }
From source file:jpcsp.Allegrex.compiler.CompilerContext.java
License:Open Source License
public void visitIntepreterCall(int opcode, Instruction insn) { loadInstruction(insn);// w w w .j av a 2 s. co m loadProcessor(); loadImm(opcode); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, instructionInternalName, "interpret", "(" + processorDescriptor + "I)V"); }