Example usage for org.objectweb.asm MethodVisitor visitInsn

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

Introduction

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

Prototype

public void visitInsn(final int opcode) 

Source Link

Document

Visits a zero operand instruction.

Usage

From source file:com.gargoylesoftware.js.nashorn.internal.codegen.types.Type.java

License:Open Source License

/**
 * Superclass logic for pop for all types
 *
 * @param method method emitter/*from   www. jav a2 s. co m*/
 * @param type   type to pop
 */
protected static void pop(final MethodVisitor method, final Type type) {
    method.visitInsn(type.isCategory2() ? POP2 : POP);
}

From source file:com.gargoylesoftware.js.nashorn.internal.codegen.types.Type.java

License:Open Source License

private static Type dup(final MethodVisitor method, final Type type, final int depth) {
    final boolean cat2 = type.isCategory2();

    switch (depth) {
    case 0://  w  ww  .  ja v a2  s.c  o  m
        method.visitInsn(cat2 ? DUP2 : DUP);
        break;
    case 1:
        method.visitInsn(cat2 ? DUP2_X1 : DUP_X1);
        break;
    case 2:
        method.visitInsn(cat2 ? DUP2_X2 : DUP_X2);
        break;
    default:
        return null; //invalid depth
    }

    return type;
}

From source file:com.gargoylesoftware.js.nashorn.internal.codegen.types.Type.java

License:Open Source License

private static void swap(final MethodVisitor method, final Type above, final Type below) {
    if (below.isCategory2()) {
        if (above.isCategory2()) {
            method.visitInsn(DUP2_X2);
            method.visitInsn(POP2);//from www .j  a va2 s  . c o m
        } else {
            method.visitInsn(DUP_X2);
            method.visitInsn(POP);
        }
    } else {
        if (above.isCategory2()) {
            method.visitInsn(DUP2_X1);
            method.visitInsn(POP2);
        } else {
            method.visitInsn(SWAP);
        }
    }
}

From source file:com.gargoylesoftware.js.nashorn.internal.tools.nasgen.ScriptClassInstrumentor.java

License:Open Source License

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();/*w  ww  . ja  va 2s .  com*/
        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);
}

From source file:com.gargoylesoftware.js.nashorn.internal.tools.nasgen.ScriptClassJavaInstrumentor.java

License:Open Source License

private void emitStaticInitializer() {
    final String className = scriptClassInfo.getJavaName();
    if (!staticInitFound) {
        // no user written <clinit> and so create one
        final MethodVisitor mv = ClassJavaGenerator.makeStaticInitializer(this);
        mv.visitCode();/*from  w  w w .  j av a 2 s  .co m*/
        mv.visitInsn(RETURN);
        mv.visitMaxs(Short.MAX_VALUE, 0);
        mv.visitEnd();
    }
    // Now generate $clinit$
    final MethodGenerator mi = ClassJavaGenerator.makeStaticInitializer(this, $CLINIT$);
    ClassJavaGenerator.emitStaticInitPrefix(mi, className, memberCount);
    if (memberCount > 0) {
        for (final MemberInfo memInfo : scriptClassInfo.getMembers()) {
            if (memInfo.isInstanceProperty() || memInfo.isInstanceFunction()) {
                ClassJavaGenerator.linkerAddGetterSetter(mi, className, memInfo);
            } else if (memInfo.isInstanceGetter()) {
                final MemberInfo setter = scriptClassInfo.findSetter(memInfo);
                ClassJavaGenerator.linkerAddGetterSetter(mi, className, memInfo, setter);
            }
        }
    }
    ClassJavaGenerator.emitStaticInitSuffix(mi, className);
}

From source file:com.github.bmsantos.core.cola.injector.ErrorsClassVisitor.java

License:Apache License

private void injectTestMethod() {

    final MethodVisitor mv = classVisitor.visitMethod(ACC_PUBLIC, METHOD_NAME, "()V", null, null);
    mv.visitCode();/*from  w  ww  .j av a2 s.co  m*/
    mv.visitVarInsn(ALOAD, 0);
    mv.visitLdcInsn(errors);
    mv.visitMethodInsn(INVOKESTATIC, "org/junit/Assert", "fail", "(Ljava/lang/String;)V", false);
    mv.visitInsn(RETURN);
    mv.visitAnnotation("Lorg/junit/Test;", true);
    mv.visitEnd();
    mv.visitMaxs(0, 0);
}

From source file:com.github.bmsantos.core.cola.injector.InjectorClassVisitor.java

License:Apache License

private void injectTestMethod(final String feature, final String scenario, final String story,
        final String projectionValues, final String reports) {

    final MethodVisitor mv = infoClassVisitor.visitMethod(ACC_PUBLIC,
            String.format(METHOD_NAME_FORMAT, feature, scenario), "()V", null, null);
    mv.visitCode();/*from w w  w  .  ja va2 s  .  c om*/
    mv.visitVarInsn(ALOAD, 0);
    mv.visitLdcInsn(feature);
    mv.visitLdcInsn(scenario);
    mv.visitLdcInsn(story);
    mv.visitLdcInsn(projectionValues);
    mv.visitLdcInsn(reports);
    mv.visitVarInsn(ALOAD, 0);
    mv.visitMethodInsn(INVOKESTATIC, "com/github/bmsantos/core/cola/story/processor/StoryProcessor", "process",
            "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V",
            false);
    mv.visitInsn(RETURN);
    mv.visitAnnotation("Lorg/junit/Test;", true);
    mv.visitEnd();
    mv.visitMaxs(0, 0);
}

From source file:com.github.bmsantos.core.cola.injector.InjectorClassVisitor.java

License:Apache License

private void injectIgnoreMethod(final String feature, final String scenario) {
    final MethodVisitor mv = infoClassVisitor.visitMethod(ACC_PUBLIC,
            String.format(IGNORED_METHOD_NAME_FORMAT, feature, scenario), "()V", null, null);
    mv.visitCode();/*from   ww w  .  ja va  2s.  c  om*/
    mv.visitVarInsn(ALOAD, 0);
    mv.visitLdcInsn(feature);
    mv.visitLdcInsn(scenario);
    mv.visitMethodInsn(INVOKESTATIC, "com/github/bmsantos/core/cola/story/processor/StoryProcessor", "ignore",
            "(Ljava/lang/String;Ljava/lang/String;)V", false);
    mv.visitInsn(RETURN);
    mv.visitAnnotation("Lorg/junit/Test;", true);
    mv.visitEnd();
    mv.visitMaxs(0, 0);
}

From source file:com.github.fge.grappa.transform.generate.ActionClassGenerator.java

License:Apache License

@Override
protected void generateMethod(InstructionGroup group, ClassWriter cw) {
    MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "run", CodegenUtils.sig(boolean.class, Context.class), null,
            null);/*from ww  w  .  j a v  a 2  s  .  c o  m*/

    insertSetContextCalls(group, 1);
    convertXLoads(group);

    group.getInstructions().accept(mv);

    mv.visitInsn(IRETURN);
    mv.visitMaxs(0, 0); // trigger automatic computing
}

From source file:com.github.fge.grappa.transform.generate.VarInitClassGenerator.java

License:Apache License

@Override
protected void generateMethod(InstructionGroup group, ClassWriter cw) {
    MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "get", CodegenUtils.sig(Object.class), null, null);
    convertXLoads(group);/*from   w  w  w.j a  va 2 s  .co m*/
    group.getInstructions().accept(mv);

    mv.visitInsn(ARETURN);
    mv.visitMaxs(0, 0); // trigger automatic computing
}