List of usage examples for org.objectweb.asm MethodVisitor visitInsn
public void visitInsn(final int opcode)
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 }