@Override public AnnotationVisitor visitAnnotation(String string, boolean bln) { return copyEnabled ? super.visitAnnotation(string, bln) : null; }
@Override public void visitAttribute(Attribute atrbt) { if (copyEnabled) { super.visitAttribute(atrbt); } }
public void println(String msg) { super.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); super.visitLdcInsn(msg); super.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V"); }
public void printObject() { super.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;"); super.visitInsn(SWAP); super.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/Object;)V"); }
public static void generateTimeStampGetter(ClassVisitor cv) { MethodVisitor timestamp = cv.visitMethod(ACC_STATIC + ACC_PRIVATE + ACC_FINAL, TIME_STAMP_NAME, "()J", null, new String[0]); timestamp.visitCode(); timestamp.visitMethodInsn(INVOKESTATIC, "java/lang/System", "nanoTime", "()J"); timestamp.visitInsn(LRETURN); timestamp.visitMaxs(1, 0); timestamp.visitEnd(); }
null); mw.visitVarInsn(ALOAD, 0); mw.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); mw.visitInsn(RETURN); mw.visitMaxs(1, 1); mw.visitEnd(); null); mw.visitMethodInsn(INVOKESTATIC, Type.getInternalName(method.getDeclaringClass()), method.getName(), Type.getMethodDescriptor(method)); mw.visitInsn(RETURN); mw.visitMaxs(1, 1); mw.visitEnd(); return cw.toByteArray();
public void push(int value) { if (value >= -1 && value <= 5) { super.visitInsn(ICONST_0 + value); } else if (value >= Byte.MIN_VALUE && value <= Byte.MAX_VALUE) { super.visitIntInsn(BIPUSH, value); } else if (value >= Short.MIN_VALUE && value <= Short.MAX_VALUE) { super.visitIntInsn(SIPUSH, value); } else { super.visitLdcInsn(Integer.valueOf(value)); } }
@Override public void visitInsn(int i) { // checking for existence of a proper exit instruction if (i == Opcodes.RETURN || i == Opcodes.IRETURN || i == Opcodes.LRETURN || i == Opcodes.DRETURN || i == Opcodes.FRETURN || i == Opcodes.ATHROW) { exitFound = true; } super.visitInsn(i); }
public static void generateTimeStampAccess(MethodVisitor mv, String className) { if (Boolean.getBoolean("btrace.timer.sampled")) { mv.visitFieldInsn(GETSTATIC, "net/java/btrace/runtime/BTraceRuntime", "TIMESTAMP", "J"); } else { mv.visitMethodInsn(INVOKESTATIC, className.replace(".", "/"), TIME_STAMP_NAME, "()J"); } } }
private int generateClinit(MethodVisitor mv) { Type clazz = Type.getType("L" + cname + ";"); // the client name (the BTrace script class name) mv.visitLdcInsn(runtime); // the name of the currently processed class mv.visitLdcInsn(clazz); // NOI18N // invocatio nof BTraceRuntime.retransform() method mv.visitMethodInsn(Opcodes.INVOKESTATIC, Type.getInternalName(BTraceRuntime.class), "retransform", "(Ljava/lang/String;Ljava/lang/Class;)V"); // NOI18N return clazz.getSize() + Type.getType(String.class).getSize(); } }
public void visitFieldInsn(int opcode, String owner, String name, String desc) { if (owner.equals(oldName)) { owner = newName; } desc = desc.replace(oldNameDesc, newNameDesc); super.visitFieldInsn(opcode, owner, name, desc); }
@Override public void visitLdcInsn(Object o) { simulatedStack.push(Boolean.FALSE); if (o instanceof Long || o instanceof Double) { simulatedStack.push(Boolean.FALSE); } if (copyEnabled) { super.visitLdcInsn(o); } }
@Override public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index) { if (index + localVarOffset < 0 || !copyEnabled) { return; } super.visitLocalVariable(name, desc, signature, start, end, index + localVarOffset); }
@Override public void visitIincInsn(int var, int increment) { if (copyEnabled) { super.visitIincInsn(var + localVarOffset, increment); } }
public void visitJumpInsn(int opcode, Label label) { if (include) { getAdaptee().visitJumpInsn(opcode, label); } }
@Override public void visitIntInsn(int opcode, int index) { switch (opcode) { case Opcodes.BIPUSH: case Opcodes.SIPUSH: { simulatedStack.push(Boolean.FALSE); break; } } if (copyEnabled) { super.visitIntInsn(opcode, index); } }
@Override public void visitLookupSwitchInsn(Label label, int[] ints, Label[] labels) { simulatedStack.poll(); if (copyEnabled) { super.visitLookupSwitchInsn(label, ints, labels); } }
public void visitEnd() { if (! classInitializerFound) { // add a dummy <clinit> method that just returns. MethodVisitor clinit = visitMethod(ACC_STATIC|ACC_PUBLIC, CLASS_INITIALIZER, "()V", null, null); clinit.visitCode(); clinit.visitInsn(RETURN); clinit.visitMaxs(0, 0); clinit.visitEnd(); } addFields(); super.visitEnd(); }
public void dup2() { super.visitInsn(DUP2); }