Example usage for org.objectweb.asm MethodVisitor visitLdcInsn

List of usage examples for org.objectweb.asm MethodVisitor visitLdcInsn

Introduction

In this page you can find the example usage for org.objectweb.asm MethodVisitor visitLdcInsn.

Prototype

public void visitLdcInsn(final Object value) 

Source Link

Document

Visits a LDC instruction.

Usage

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);
    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 {/*from   w  ww  .  j av a 2 s .c  om*/
        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);
    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.InjectCollection.java

License:Apache License

public void injectRegister(MethodVisitor mv, int id) {
    mv.visitLdcInsn(new Integer(id));
    mv.visitMethodInsn(Opcodes.INVOKESTATIC, "jerl/bcm/util/Register", "register", "(I)V");
}

From source file:jerl.bcm.inj.impl.InjectCollection.java

License:Apache License

public void injectReplaceStackInt(MethodVisitor mv, int i) {
    mv.visitInsn(Opcodes.POP);//from www  . j  a  v  a  2s.  c  o m
    mv.visitLdcInsn(new Integer(i));
}

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);
    mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, FieldAddSEMCLog.LOG_CLASS_NAME, "trace", "(Ljava/lang/String;)V");
}

From source file:jerl.semc.MethodEntrySEMCInitLog.java

License:Apache License

@Override
public void inject(MethodVisitor mv) {
    mv.visitLdcInsn(Type.getType("L" + className + ";"));
    mv.visitMethodInsn(Opcodes.INVOKESTATIC, FieldAddSEMCLog.LOG_CLASS_NAME, "getLogger",
            "(Ljava/lang/Class;)L" + FieldAddSEMCLog.LOG_CLASS_NAME + ";");
    mv.visitFieldInsn(Opcodes.PUTSTATIC, className, FieldAddSEMCLog.LOG_FIELD_NAME,
            "L" + FieldAddSEMCLog.LOG_CLASS_NAME + ";");
}

From source file:jpcsp.Allegrex.compiler.CompilerContext.java

License:Open Source License

public void visitLogInfo(MethodVisitor mv, String message) {
    mv.visitLdcInsn(message);
    mv.visitMethodInsn(Opcodes.INVOKESTATIC, runtimeContextInternalName, RuntimeContext.logInfo,
            "(" + stringDescriptor + ")V");
}

From source file:kilim.analysis.CallWeaver.java

License:Open Source License

private void loadConstant(MethodVisitor mv, Value v) {
    if (v.getTypeDesc() == D_NULL) {
        mv.visitInsn(ACONST_NULL);//from   ww w  . j av  a  2s .  com
        return;
    }
    Object c = v.getConstVal();
    if (c instanceof Integer) {
        int i = (Integer) c;
        if (i > -1 && i <= 5) {
            mv.visitInsn(i + 1 + ICONST_M1);
            return;
        } else if (i >= Byte.MIN_VALUE && i <= Byte.MAX_VALUE) {
            mv.visitIntInsn(BIPUSH, i);
            return;
        } else if (i >= Short.MIN_VALUE && i <= Short.MAX_VALUE) {
            mv.visitIntInsn(SIPUSH, i);
            return;
        }
    } else if (c instanceof Float) {
        Float f = ((Float) c).floatValue();
        int insn = 0;
        if (f == 0.0)
            insn = FCONST_0;
        else if (f == 1.0)
            insn = FCONST_1;
        else if (f == 2.0)
            insn = FCONST_2;
        if (insn != 0) {
            mv.visitInsn(insn);
            return;
        }
    } else if (c instanceof Long) {
        Long l = ((Long) c).longValue();
        int insn = 0;
        if (l == 0L)
            insn = LCONST_0;
        else if (l == 1L)
            insn = LCONST_1;
        if (insn != 0) {
            mv.visitInsn(insn);
            return;
        }
    } else if (c instanceof Double) {
        Double d = ((Double) c).doubleValue();
        int insn = 0;
        if (d == 0.0)
            insn = DCONST_0;
        else if (d == 1.0)
            insn = DCONST_1;
        if (insn != 0) {
            mv.visitInsn(insn);
            return;
        }
    }
    // No special constants found.
    mv.visitLdcInsn(c);
}

From source file:kr.debop4j.core.reflect.ConstructorAccess.java

License:Apache License

/** inner ?  */
static void insertNewInstanceInner(ClassWriter cw, String classNameInternal,
        String enclosingClassNameInternal) {
    MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "newInstance", "(Ljava/lang/Object;)Ljava/lang/Object;", null,
            null);//from w ww.  j  a  v  a  2s.  c o m
    mv.visitCode();
    if (enclosingClassNameInternal != null) {
        mv.visitTypeInsn(NEW, classNameInternal);
        mv.visitInsn(DUP);
        mv.visitVarInsn(ALOAD, 1);
        mv.visitTypeInsn(CHECKCAST, enclosingClassNameInternal);
        mv.visitInsn(DUP);
        mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "getClass", "()Ljava/lang/Class;");
        mv.visitInsn(POP);
        mv.visitMethodInsn(INVOKESPECIAL, classNameInternal, "<init>",
                "(L" + enclosingClassNameInternal + ";)V");
        mv.visitInsn(ARETURN);
        mv.visitMaxs(4, 2);
    } else {
        mv.visitTypeInsn(NEW, "java/lang/UnsupportedOperationException");
        mv.visitInsn(DUP);
        mv.visitLdcInsn("Not an inner class.");
        mv.visitMethodInsn(INVOKESPECIAL, "java/lang/UnsupportedOperationException", "<init>",
                "(Ljava/lang/String;)V");
        mv.visitInsn(ATHROW);
        mv.visitMaxs(3, 2);
    }
    mv.visitEnd();
}

From source file:kr.debop4j.core.reflect.FieldAccess.java

License:Apache License

static private MethodVisitor insertThrowExceptionForFieldNotFound(MethodVisitor mv) {
    mv.visitTypeInsn(NEW, "java/lang/IllegalArgumentException");
    mv.visitInsn(DUP);/* www.  j a v a 2  s  .c  o m*/
    mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
    mv.visitInsn(DUP);
    mv.visitLdcInsn("Field not found: ");
    mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "(Ljava/lang/String;)V");
    mv.visitVarInsn(ILOAD, 2);
    mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(I)Ljava/lang/StringBuilder;");
    mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;");
    mv.visitMethodInsn(INVOKESPECIAL, "java/lang/IllegalArgumentException", "<init>", "(Ljava/lang/String;)V");
    mv.visitInsn(ATHROW);
    return mv;
}