Java Code Examples for jdk.internal.org.objectweb.asm.MethodVisitor#visitInsn()
The following examples show how to use
jdk.internal.org.objectweb.asm.MethodVisitor#visitInsn() .
These examples are extracted from open source projects.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: openjdk-jdk9 File: ScriptClassInstrumentor.java License: GNU General Public License v2.0 | 6 votes |
private void emitStaticInitializer() { final String className = scriptClassInfo.getJavaName(); if (! staticInitFound) { // no user written <clinit> and so create one final MethodVisitor mv = ClassGenerator.makeStaticInitializer(this); mv.visitCode(); mv.visitInsn(RETURN); mv.visitMaxs(Short.MAX_VALUE, 0); mv.visitEnd(); } // Now generate $clinit$ final MethodGenerator mi = ClassGenerator.makeStaticInitializer(this, $CLINIT$); ClassGenerator.emitStaticInitPrefix(mi, className, memberCount); if (memberCount > 0) { for (final MemberInfo memInfo : scriptClassInfo.getMembers()) { if (memInfo.isInstanceProperty() || memInfo.isInstanceFunction()) { ClassGenerator.linkerAddGetterSetter(mi, className, memInfo); } else if (memInfo.isInstanceGetter()) { final MemberInfo setter = scriptClassInfo.findSetter(memInfo); ClassGenerator.linkerAddGetterSetter(mi, className, memInfo, setter); } } } ClassGenerator.emitStaticInitSuffix(mi, className); }
Example 2
Source Project: TencentKona-8 File: ObjectType.java License: GNU General Public License v2.0 | 6 votes |
@Override public Type ldc(final MethodVisitor method, final Object c) { if (c == null) { method.visitInsn(ACONST_NULL); } else if (c instanceof Undefined) { return loadUndefined(method); } else if (c instanceof String) { method.visitLdcInsn(c); return STRING; } else if (c instanceof Handle) { method.visitLdcInsn(c); return Type.typeFor(MethodHandle.class); } else { throw new UnsupportedOperationException("implementation missing for class " + c.getClass() + " value=" + c); } return Type.OBJECT; }
Example 3
Source Project: openjdk-jdk9 File: BootstrapMethodErrorTest.java License: GNU General Public License v2.0 | 5 votes |
void defineIndyCallingClass(ClassWriter cw) { cw.visit(52, ACC_SUPER | ACC_PUBLIC, INDY_CALLER_CLASS_NAME, null, "java/lang/Object", null); MethodVisitor mv = cw.visitMethod(ACC_PUBLIC | ACC_STATIC, "invoke", "()V", null, null); mv.visitCode(); Handle h = new Handle(H_INVOKESTATIC, BOOTSTRAP_METHOD_CLASS_NAME, BOOTSTRAP_METHOD_NAME, BOOTSTRAP_METHOD_DESC, false); mv.visitInvokeDynamicInsn(BOOTSTRAP_METHOD_CLASS_NAME, "()V", h); mv.visitInsn(RETURN); mv.visitMaxs(0, 0); mv.visitEnd(); cw.visitEnd(); }
Example 4
Source Project: openjdk-jdk9 File: TestANewArray.java License: GNU General Public License v2.0 | 5 votes |
public static byte[] dumpClassFile(int cfv, int testDimension264, String arrayDim) throws Exception { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); MethodVisitor mv; classCName = "classCName_" + cfv + "_" + testDimension264; cw.visit(cfv, ACC_PUBLIC + ACC_SUPER, classCName, null, "java/lang/Object", null); { mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false); mv.visitInsn(RETURN); mv.visitMaxs(1, 1); mv.visitEnd(); } { // classCName main method mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null); mv.visitCode(); mv.visitIntInsn(BIPUSH, 1); mv.visitTypeInsn(ANEWARRAY, arrayDim); // Test ANEWARRAY bytecode with various dimensions mv.visitInsn(RETURN); mv.visitMaxs(2, 2); mv.visitEnd(); } cw.visitEnd(); return cw.toByteArray(); }
Example 5
Source Project: jdk8u60 File: IntType.java License: GNU General Public License v2.0 | 5 votes |
@Override public Type mul(final MethodVisitor method, final int programPoint) { if(programPoint == INVALID_PROGRAM_POINT) { method.visitInsn(IMUL); } else { method.visitInvokeDynamicInsn("imul", "(II)I", MATHBOOTSTRAP, programPoint); } return INT; }
Example 6
Source Project: TencentKona-8 File: IntType.java License: GNU General Public License v2.0 | 5 votes |
@Override public Type neg(final MethodVisitor method, final int programPoint) { if(programPoint == INVALID_PROGRAM_POINT) { method.visitInsn(INEG); } else { method.visitInvokeDynamicInsn("ineg", "(I)I", MATHBOOTSTRAP, programPoint); } return INT; }
Example 7
Source Project: openjdk-8-source File: LongType.java License: GNU General Public License v2.0 | 4 votes |
@Override public Type mul(final MethodVisitor method) { method.visitInsn(LMUL); return LONG; }
Example 8
Source Project: openjdk-8-source File: IntType.java License: GNU General Public License v2.0 | 4 votes |
@Override public Type sub(final MethodVisitor method) { method.visitInsn(ISUB); return INT; }
Example 9
Source Project: openjdk-8-source File: LongType.java License: GNU General Public License v2.0 | 4 votes |
@Override public Type sub(final MethodVisitor method) { method.visitInsn(LSUB); return LONG; }
Example 10
Source Project: nashorn File: IntType.java License: GNU General Public License v2.0 | 4 votes |
@Override public Type div(final MethodVisitor method) { method.visitInsn(IDIV); return INT; }
Example 11
Source Project: Bytecoder File: ProxyGenerator.java License: Apache License 2.0 | 4 votes |
/** * Generate the static initializer method for the proxy class. */ private void generateStaticInitializer() { MethodVisitor mv = visitMethod(Modifier.STATIC, NAME_CLINIT, "()V", null, null); mv.visitCode(); Label L_startBlock = new Label(); Label L_endBlock = new Label(); Label L_NoMethodHandler = new Label(); Label L_NoClassHandler = new Label(); mv.visitTryCatchBlock(L_startBlock, L_endBlock, L_NoMethodHandler, JL_NO_SUCH_METHOD_EX); mv.visitTryCatchBlock(L_startBlock, L_endBlock, L_NoClassHandler, JL_CLASS_NOT_FOUND_EX); mv.visitLabel(L_startBlock); for (List<ProxyMethod> sigmethods : proxyMethods.values()) { for (ProxyMethod pm : sigmethods) { pm.codeFieldInitialization(mv, className); } } mv.visitInsn(RETURN); mv.visitLabel(L_endBlock); // Generate exception handler mv.visitLabel(L_NoMethodHandler); mv.visitVarInsn(ASTORE, 1); mv.visitTypeInsn(Opcodes.NEW, JL_NO_SUCH_METHOD_ERROR); mv.visitInsn(DUP); mv.visitVarInsn(ALOAD, 1); mv.visitMethodInsn(INVOKEVIRTUAL, JL_THROWABLE, "getMessage", "()Ljava/lang/String;", false); mv.visitMethodInsn(INVOKESPECIAL, JL_NO_SUCH_METHOD_ERROR, "<init>", "(Ljava/lang/String;)V", false); mv.visitInsn(ATHROW); mv.visitLabel(L_NoClassHandler); mv.visitVarInsn(ASTORE, 1); mv.visitTypeInsn(Opcodes.NEW, JL_NO_CLASS_DEF_FOUND_ERROR); mv.visitInsn(DUP); mv.visitVarInsn(ALOAD, 1); mv.visitMethodInsn(INVOKEVIRTUAL, JL_THROWABLE, "getMessage", "()Ljava/lang/String;", false); mv.visitMethodInsn(INVOKESPECIAL, JL_NO_CLASS_DEF_FOUND_ERROR, "<init>", "(Ljava/lang/String;)V", false); mv.visitInsn(ATHROW); // Maxs computed by ClassWriter.COMPUTE_FRAMES, these arguments ignored mv.visitMaxs(-1, -1); mv.visitEnd(); }
Example 12
Source Project: TencentKona-8 File: Type.java License: GNU General Public License v2.0 | 4 votes |
@Override public Type aload(final MethodVisitor method) { method.visitInsn(IALOAD); return INT; }
Example 13
Source Project: openjdk-jdk8u File: BooleanType.java License: GNU General Public License v2.0 | 4 votes |
@Override public Type loadForcedInitializer(final MethodVisitor method) { method.visitInsn(ICONST_0); return BOOLEAN; }
Example 14
Source Project: nashorn File: NumberType.java License: GNU General Public License v2.0 | 4 votes |
@Override public Type neg(final MethodVisitor method) { method.visitInsn(DNEG); return NUMBER; }
Example 15
Source Project: openjdk-jdk8u-backup File: Type.java License: GNU General Public License v2.0 | 4 votes |
@Override public void astore(final MethodVisitor method) { method.visitInsn(IASTORE); }
Example 16
Source Project: openjdk-jdk8u File: IntType.java License: GNU General Public License v2.0 | 4 votes |
@Override public Type or(final MethodVisitor method) { method.visitInsn(IOR); return INT; }
Example 17
Source Project: openjdk-jdk8u-backup File: TestAMEnotNPE.java License: GNU General Public License v2.0 | 4 votes |
/** * Returns the bytes for a class with name d_name (presumably "D" in some * package), extending some class with name sub_what, implementing p.I, * and defining two methods m() and m(11args) with access method_acc. * * @param d_name Name of class that is defined * @param sub_what Name of class that it extends * @param method_acc Accessibility of method(s) m in defined class. * @return * @throws Exception */ public static byte[] bytesForSomeDsubSomethingSomeAccess (String d_name, String sub_what, int method_acc) throws Exception { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS); MethodVisitor mv; String[] interfaces = {"p/I"}; cw.visit(V1_8, ACC_PUBLIC + ACC_SUPER, d_name, null, sub_what, interfaces); { mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, sub_what, "<init>", "()V"); mv.visitInsn(RETURN); mv.visitMaxs(0, 0); mv.visitEnd(); } // int m() {return 3;} { mv = cw.visitMethod(method_acc, "m", "()I", null, null); mv.visitCode(); mv.visitLdcInsn(new Integer(3)); mv.visitInsn(IRETURN); mv.visitMaxs(0, 0); mv.visitEnd(); } // int m(11args) {return 3;} { mv = cw.visitMethod(method_acc, "m", "(BCSIJ" + "Ljava/lang/Object;" + "Ljava/lang/Object;" + "Ljava/lang/Object;" + "Ljava/lang/Object;" + "Ljava/lang/Object;" + "Ljava/lang/Object;" + ")I", null, null); mv.visitCode(); mv.visitLdcInsn(new Integer(3)); mv.visitInsn(IRETURN); mv.visitMaxs(0, 0); mv.visitEnd(); } cw.visitEnd(); return cw.toByteArray(); }
Example 18
Source Project: openjdk-jdk8u File: NumberType.java License: GNU General Public License v2.0 | 4 votes |
@Override public Type rem(final MethodVisitor method, final int programPoint) { method.visitInsn(DREM); return NUMBER; }
Example 19
Source Project: jdk8u60 File: Type.java License: GNU General Public License v2.0 | 2 votes |
/** * Superclass logic for pop for all types * * @param method method emitter * @param type type to pop */ protected static void pop(final MethodVisitor method, final Type type) { method.visitInsn(type.isCategory2() ? POP2 : POP); }
Example 20
Source Project: nashorn File: Type.java License: GNU General Public License v2.0 | 2 votes |
/** * Superclass logic for pop for all types * * @param method method emitter * @param type type to pop */ protected static void pop(final MethodVisitor method, final Type type) { method.visitInsn(type.isCategory2() ? POP2 : POP); }