List of usage examples for org.objectweb.asm MethodVisitor visitMaxs
public void visitMaxs(final int maxStack, final int maxLocals)
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(); }