Example usage for org.objectweb.asm Opcodes INVOKEVIRTUAL

List of usage examples for org.objectweb.asm Opcodes INVOKEVIRTUAL

Introduction

In this page you can find the example usage for org.objectweb.asm Opcodes INVOKEVIRTUAL.

Prototype

int INVOKEVIRTUAL

To view the source code for org.objectweb.asm Opcodes INVOKEVIRTUAL.

Click Source Link

Usage

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");
}