Example usage for org.objectweb.asm MethodVisitor visitMaxs

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

Introduction

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

Prototype

public void visitMaxs(final int maxStack, final int maxLocals) 

Source Link

Document

Visits the maximum stack size and the maximum number of local variables of the method.

Usage

From source file:com.facebook.presto.byteCode.MethodDefinition.java

License:Apache License

public void visit(ClassVisitor visitor, boolean addReturn) {
    String[] exceptions = new String[this.exceptions.size()];
    for (int i = 0; i < exceptions.length; i++) {
        exceptions[i] = this.exceptions.get(i).getClassName();
    }/*from   w w  w.j  a  va2s.  c  o  m*/

    MethodVisitor methodVisitor = visitor.visitMethod(toAccessModifier(access), name, getMethodDescriptor(),
            genericMethodSignature(returnType, parameterTypes), exceptions);

    if (methodVisitor == null) {
        return;
    }

    // visit method annotations
    for (AnnotationDefinition annotation : annotations) {
        annotation.visitMethodAnnotation(methodVisitor);
    }

    // visit parameter annotations
    for (int parameterIndex = 0; parameterIndex < parameterAnnotations.size(); parameterIndex++) {
        List<AnnotationDefinition> parameterAnnotations1 = this.parameterAnnotations.get(parameterIndex);
        for (AnnotationDefinition parameterAnnotation : parameterAnnotations1) {
            parameterAnnotation.visitParameterAnnotation(parameterIndex, methodVisitor);
        }
    }

    // visit code
    methodVisitor.visitCode();

    // visit instructions
    body.accept(methodVisitor);
    if (addReturn) {
        new InsnNode(RETURN).accept(methodVisitor);
    }

    // visit local variable declarations
    for (LocalVariableNode localVariableNode : localVariableNodes) {
        localVariableNode.accept(methodVisitor);
    }

    // done
    methodVisitor.visitMaxs(-1, -1);
    methodVisitor.visitEnd();
}

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();/*from www .  ja  v  a 2s  . c o  m*/
        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  .  ja  v  a 2 s.  c  om
        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  a va  2s .  c  o 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  .j  a va2s .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   w  ww  . j  av a2  s .  c  o  m
    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 w ww .  java 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  ww  w.ja v  a2s  . c  o  m
    group.getInstructions().accept(mv);

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

From source file:com.github.fge.grappa.transform.process.GroupClassGenerator.java

License:Apache License

private void generateConstructor(ClassWriter cw) {
    MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "<init>", CodegenUtils.sig(void.class, String.class), null,
            null);/*from   www. jav  a 2s  . c  om*/
    mv.visitVarInsn(ALOAD, 0);
    mv.visitVarInsn(ALOAD, 1);
    mv.visitMethodInsn(INVOKESPECIAL, getBaseType().getInternalName(), "<init>",
            CodegenUtils.sig(void.class, String.class), false);
    mv.visitInsn(RETURN);
    mv.visitMaxs(0, 0); // trigger automatic computing
}

From source file:com.github.jasmo.obfuscate.ScrambleStrings.java

License:Open Source License

private void createUnscramble() {
    MethodVisitor mv = unscrambleClass.visitMethod(ACC_PUBLIC | ACC_STATIC, CALL_NAME, CALL_DESC, null, null);
    mv.visitCode();//from  ww  w  .j av a  2  s . c o m
    mv.visitTypeInsn(NEW, "java/lang/String");
    mv.visitInsn(DUP);
    mv.visitMethodInsn(INVOKESTATIC, "java/util/Base64", "getDecoder", "()Ljava/util/Base64$Decoder;", false);
    mv.visitFieldInsn(GETSTATIC, unscrambleClass.name, FIELD_NAME, "[Ljava/lang/String;");
    mv.visitVarInsn(ILOAD, 0);
    mv.visitInsn(AALOAD);
    mv.visitMethodInsn(INVOKEVIRTUAL, "java/util/Base64$Decoder", "decode", "(Ljava/lang/String;)[B", false);
    mv.visitLdcInsn("UTF-8");
    mv.visitMethodInsn(INVOKESPECIAL, "java/lang/String", "<init>", "([BLjava/lang/String;)V", false);
    mv.visitInsn(ARETURN);
    mv.visitMaxs(0, 0);
    mv.visitEnd();
}