List of usage examples for org.objectweb.asm MethodVisitor visitEnd
public void visitEnd()
From source file:com.facebook.buck.java.abi.MethodMirror.java
License:Apache License
public void appendTo(ClassWriter writer) { MethodVisitor method = writer.visitMethod(access, name, desc, signature, exceptions); for (AnnotationMirror annotation : annotations) { annotation.appendTo(method);//from ww w.jav a 2 s.c o m } for (int i = 0; i < parameterAnnotations.length; i++) { AnnotationMirror annotation = parameterAnnotations[i]; if (annotation == null) { continue; } annotation.appendTo(method, i); } method.visitEnd(); }
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(); }/* w w w . ja v a 2s .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 w w w . j a v a 2 s . c om*/ 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 ww w.ja va2s .c o 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 w w . java 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 ww. j a v a 2s.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 w w . jav a 2s. com*/ 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.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();/* w ww .j av a2 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(); }
From source file:com.github.javalbert.bytecode.utils.AsmUtils.java
License:Apache License
public static void visitDefaultConstructor(ClassWriter cw, String classTypeDescriptor) { MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null); mv.visitCode();/*from w ww. j a va 2 s .c o m*/ Label l0 = new Label(); mv.visitLabel(l0); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false); mv.visitInsn(RETURN); Label l1 = new Label(); mv.visitLabel(l1); mv.visitLocalVariable("this", classTypeDescriptor, null, l0, l1, 0); mv.visitMaxs(1, 1); mv.visitEnd(); }
From source file:com.github.megatronking.stringfog.plugin.StringFogClassVisitor.java
License:Apache License
@Override public void visitEnd() { if (!mIgnoreClass && !isClInitExists && !mStaticFinalFields.isEmpty()) { MethodVisitor mv = super.visitMethod(Opcodes.ACC_STATIC, "<clinit>", "()V", null, null); mv.visitCode();/* w ww .j a v a2 s .com*/ // Here init static final fields. for (ClassStringField field : mStaticFinalFields) { if (!canEncrypted(field.value)) { continue; } String originValue = field.value; String encryptValue = mStringFogImpl.encrypt(originValue, mKey); mMappingPrinter.output(getJavaClassName(), originValue, encryptValue); mv.visitLdcInsn(encryptValue); mv.visitMethodInsn(Opcodes.INVOKESTATIC, mFogClassName, "decrypt", "(Ljava/lang/String;)Ljava/lang/String;", false); mv.visitFieldInsn(Opcodes.PUTSTATIC, mClassName, field.name, ClassStringField.STRING_DESC); } mv.visitInsn(Opcodes.RETURN); mv.visitMaxs(1, 0); mv.visitEnd(); } super.visitEnd(); }