List of usage examples for org.objectweb.asm MethodVisitor visitLdcInsn
public void visitLdcInsn(final Object value)
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; }