Refine search
public static void PUSH(MethodVisitor mv, String value) { if (value == null) mv.visitInsn(ACONST_NULL); else mv.visitLdcInsn(value); }
private void visitMethodStub(MethodVisitor mv) { mv.visitTypeInsn(Opcodes.NEW, "java/lang/RuntimeException"); mv.visitInsn(Opcodes.DUP); mv.visitLdcInsn("Stub!"); String owner = "java/lang/RuntimeException"; String name = "<init>"; String desc = "(Ljava/lang/String;)V"; mv.visitMethodInsn(Opcodes.INVOKESPECIAL, owner, name, desc, false); mv.visitInsn(Opcodes.ATHROW); }
private static void writeRelease(MethodVisitor methodVisitor, int wOffset, int type, Class<? extends ProxyChannelRingBuffer> backendType) { methodVisitor.visitVarInsn(Opcodes.ALOAD, LOCALS_INDEX_THIS); methodVisitor.visitVarInsn(Opcodes.LLOAD, wOffset); methodVisitor.visitLdcInsn(type); methodVisitor.visitMethodInsn(Opcodes.INVOKEVIRTUAL, Type.getInternalName(backendType), "writeRelease", "(JI)V", false); }
case Constants.MONITORENTER: case Constants.MONITOREXIT: methodVisitor.visitInsn(opcode); currentOffset += 1; break; break; case Constants.LDC: methodVisitor.visitLdcInsn( readConst(classFileBuffer[currentOffset + 1] & 0xFF, charBuffer)); currentOffset += 2; case Constants.LDC_W: case Constants.LDC2_W: methodVisitor.visitLdcInsn(readConst(readUnsignedShort(currentOffset + 1), charBuffer)); currentOffset += 3; break; boolean isInterface = classFileBuffer[cpInfoOffset - 1] == Symbol.CONSTANT_INTERFACE_METHODREF_TAG; methodVisitor.visitMethodInsn(opcode, owner, name, descriptor, isInterface);
@Override public void handleMethodTranslateException(Method method, DexMethodNode methodNode, MethodVisitor mv, Exception e) { // replace the generated code with // 'return new RuntimeException("D2jFail translate: xxxxxxxxxxxxx");' StringWriter s = new StringWriter(); s.append("d2j fail translate: "); e.printStackTrace(new PrintWriter(s)); String msg = s.toString(); mv.visitTypeInsn(Opcodes.NEW, "java/lang/RuntimeException"); mv.visitInsn(Opcodes.DUP); mv.visitLdcInsn(msg); mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/RuntimeException", "<init>", "(Ljava/lang/String;)V"); mv.visitInsn(Opcodes.ATHROW); } }
private static void loadLocalIndexAndApplyDelta(MethodVisitor methodVisitor, int localVariableIndex, long delta) { methodVisitor.visitVarInsn(Opcodes.LLOAD, localVariableIndex); if (delta != 0) { methodVisitor.visitLdcInsn(delta); methodVisitor.visitInsn(Opcodes.LADD); } }
@Override public void visitCode() { AsmUtil.PUSH(mv, fullname_hash); mv.visitLdcInsn(fullname); mv.visitMethodInsn(Opcodes.INVOKESTATIC, TRACEMAIN, START_METHOD, START_SIGNATURE, false); statIdx = newLocal(Type.getType(Object.class)); mv.visitVarInsn(Opcodes.ASTORE, statIdx); mv.visitLabel(startFinally); mv.visitCode(); }
mv.visitLdcInsn(e.getKey()); mv.visitInsn(ARETURN); mv.visitInsn(DUP); mv.visitLdcInsn("invalid idx"); mv.visitMethodInsn(INVOKESPECIAL, "java/lang/RuntimeException", "<init>", "(Ljava/lang/String;)V"); mv.visitInsn(ATHROW); mv.visitMaxs(-1, -1); mv.visitEnd();
public static void PUSH(MethodVisitor mv, long value) { if (value == 0) mv.visitInsn(LCONST_0); else if (value == 1) mv.visitInsn(LCONST_1); else mv.visitLdcInsn(new Long(value)); // LDC2_W }
@Override public void visitCode() { AsmUtil.PUSH(mv, fullname_hash); mv.visitLdcInsn(fullname); if (isStatic) { AsmUtil.PUSHNULL(mv); } else { mv.visitVarInsn(Opcodes.ALOAD, 0); } mv.visitMethodInsn(Opcodes.INVOKESTATIC, TRACE_SQL, START_METHOD, START_SIGNATURE, false); statIdx = newLocal(Type.getType(Object.class)); mv.visitVarInsn(Opcodes.ASTORE, statIdx); mv.visitLabel(startFinally); mv.visitCode(); }
mv.visitInsn(Opcodes.ACONST_NULL); mv.visitVarInsn(Opcodes.ASTORE, 30); mv.visitInsn(Opcodes.DUP); mv.visitVarInsn(Opcodes.ALOAD, 4); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "com/mysql/jdbc/Buffer", "getByteBuffer", "()[B"); mv.visitLdcInsn("utf-8"); mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/String", "<init>", "([BLjava/lang/String;)V"); mv.visitVarInsn(Opcodes.ASTORE, 30); mv.visitMethodInsn(Opcodes.INVOKESTATIC, "com/taobao/profile/Profiler", "start4Mysql", "(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V"); mv.visitCode();
/** * @param mv * @param value */ public static void PUSH(MethodVisitor mv, double value) { if (value == 0) mv.visitInsn(DCONST_0); else if (value == 1) mv.visitInsn(DCONST_1); else mv.visitLdcInsn(new Double(value)); }
private void addCodeForSetTransactionX(MethodVisitor mv, String templateGetterName, String threadContextSetterName) { mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, 4); // methodMetaInternalName is non-null when transactionNameTemplate or // transactionUserTemplate are non-empty checkNotNull(methodMetaInternalName); mv.visitMethodInsn(INVOKEVIRTUAL, methodMetaInternalName, templateGetterName, "()Lorg/glowroot/agent/bytecode/api/MessageTemplate;", false); mv.visitVarInsn(ALOAD, 1); mv.visitVarInsn(ALOAD, 2); mv.visitVarInsn(ALOAD, 3); mv.visitMethodInsn(INVOKESTATIC, "org/glowroot/agent/bytecode/api/Bytecode", "getMessageText", "(Lorg/glowroot/agent/bytecode/api/MessageTemplate;Ljava/lang/Object;" + "Ljava/lang/String;[Ljava/lang/Object;)" + "Ljava/lang/String;", false); mv.visitLdcInsn(priorityForSetters); mv.visitMethodInsn(INVOKEINTERFACE, "org/glowroot/agent/plugin/api/ThreadContext", threadContextSetterName, "(Ljava/lang/String;I)V", true); }
mv.visitInsn(DUP); mv.visitLdcInsn("A method was invoked on a dummy class, due to the static field %s not being initialized " + "(most likely in a CatalogType-related class).\n" + "Method: " + method); mv.visitLdcInsn(1); mv.visitTypeInsn(ANEWARRAY, "java/lang/String"); mv.visitLdcInsn(0); mv.visitInsn(AASTORE); mv.visitMethodInsn(INVOKESTATIC, Type.getInternalName(String.class), "format", "(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;", false); mv.visitMethodInsn(INVOKESPECIAL, internalException, "<init>", "(Ljava/lang/String;)V", false); mv.visitInsn(ATHROW); mv.visitMaxs(0, 0); mv.visitEnd();
public static void PUSH(MethodVisitor mv, float value) { if (value == 0.0) mv.visitInsn(FCONST_0); else if (value == 1.0) mv.visitInsn(FCONST_1); else if (value == 2.0) mv.visitInsn(FCONST_2); else mv.visitLdcInsn(new Float(value)); }
private static void loadArrayType(MethodVisitor mv, Type type, Type ownerType) { loadType(mv, type.getElementType(), ownerType); mv.visitLdcInsn(type.getDimensions()); mv.visitMethodInsn(INVOKESTATIC, bytecodeUtilType.getInternalName(), "getArrayClass", "(Ljava/lang/Class;I)Ljava/lang/Class;", false); }
mv.visitInsn(DUP); if (hasThis) { mv.visitVarInsn(ALOAD, 0); start = 1; } else { mv.visitInsn(ACONST_NULL); start = 0; mv.visitInsn(ACONST_NULL); } else { mv.visitLdcInsn(args.length); mv.visitTypeInsn(ANEWARRAY, "java/lang/Object"); for (int i = 0; i < args.length; i++) { mv.visitInsn(DUP); mv.visitLdcInsn(i); mv.visitVarInsn(args[i].getOpcode(ILOAD), i + start); box(args[i], mv); mv.visitLdcInsn(nextIdx); mv.visitMethodInsn(INVOKESPECIAL, getCurrentInvocationName(), "<init>", "(Ljava/lang/Object;[Ljava/lang/Object;I)V"); mv.visitMethodInsn(INVOKESTATIC, toInternal(mapTo.owner), mapTo.name, mapTo.desc); unBox(ret, Type.getReturnType(mapTo.desc), mv); mv.visitInsn(ret.getOpcode(IRETURN));
public void push(float value) { if (value == 0f || value == 1f || value == 2f) { mv.visitInsn(TypeUtils.FCONST(value)); } else { mv.visitLdcInsn(new Float(value)); } } public void push(double value) {
private void addCodeForOptionalTransactionAttributes(MethodVisitor mv) { if (!config.transactionType().isEmpty() && !config.isTransaction()) { mv.visitVarInsn(ALOAD, 0); mv.visitLdcInsn(config.transactionType()); mv.visitLdcInsn(priorityForSetters); mv.visitMethodInsn(INVOKEINTERFACE, "org/glowroot/agent/plugin/api/ThreadContext", "setTransactionType", "(Ljava/lang/String;I)V", true); for (String attrName : config.transactionAttributeTemplates().keySet()) { mv.visitVarInsn(ALOAD, 0); mv.visitLdcInsn(attrName); mv.visitVarInsn(ALOAD, 4); mv.visitMethodInsn(INVOKEVIRTUAL, methodMetaInternalName, "getTransactionAttributeTemplate" + i++, "()Lorg/glowroot/agent/bytecode/api/MessageTemplate;", false); if (slowThresholdMillis != null) { mv.visitVarInsn(ALOAD, 0); mv.visitLdcInsn(slowThresholdMillis.longValue()); mv.visitFieldInsn(GETSTATIC, "java/util/concurrent/TimeUnit", "MILLISECONDS", "Ljava/util/concurrent/TimeUnit;"); mv.visitLdcInsn(priorityForSetters); mv.visitMethodInsn(INVOKEINTERFACE, "org/glowroot/agent/plugin/api/ThreadContext", "setTransactionSlowThreshold", "(JLjava/util/concurrent/TimeUnit;I)V", true);
mv.visitLdcInsn(i); mv.visitInsn(AALOAD); unBox(args[i], OBJECT_TYPE, mv); mv.visitMethodInsn(opcode, toInternal(t.owner), t.name, t.desc); Type ret = Type.getReturnType(t.desc); box(ret, mv); mv.visitInsn(ARETURN); mv.visitMaxs(-1, -1); mv.visitEnd();