List of usage examples for org.objectweb.asm Opcodes INVOKESPECIAL
int INVOKESPECIAL
To view the source code for org.objectweb.asm Opcodes INVOKESPECIAL.
Click Source Link
From source file:test.GenSourceDebugExtension.java
License:Open Source License
public static byte[] dump() { ClassWriter cw = new ClassWriter(0); MethodVisitor mv;/*from w w w .j a v a 2 s . c o m*/ cw.visit(52, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, "sourcedebugextension/Test", null, "java/lang/Object", null); // This is the important part for the test - it's an example SourceDebugExtension found // in Clojure. cw.visitSource("dispatch.clj", "SMAP\ndispatch.java\nClojure\n*S Clojure\n*F\n+ 1 dispatch.clj\nclojure/pprint/dispatch.clj\n*L\n144#1,8:144\n*E"); { mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null, null); mv.visitCode(); mv.visitVarInsn(Opcodes.ALOAD, 0); mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false); mv.visitInsn(Opcodes.RETURN); mv.visitMaxs(1, 1); mv.visitEnd(); } { mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null); mv.visitCode(); mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "err", "Ljava/io/PrintStream;"); mv.visitLdcInsn("Hello"); mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false); mv.visitInsn(Opcodes.RETURN); mv.visitMaxs(2, 1); mv.visitEnd(); } cw.visitEnd(); return cw.toByteArray(); }
From source file:test.GenZipWithEntries.java
License:Open Source License
public static byte[] dump(String name) { ClassWriter cw = new ClassWriter(0); cw.visit(52, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, name, null, "java/lang/Object", null); {// w w w . j ava 2s. com MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null, null); mv.visitCode(); mv.visitVarInsn(Opcodes.ALOAD, 0); mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false); mv.visitInsn(Opcodes.RETURN); mv.visitMaxs(1, 1); mv.visitEnd(); } cw.visitEnd(); return cw.toByteArray(); }
From source file:uk.ac.cam.cl.dtg.teaching.programmingtest.java.bytecode.InstructionCounterMethodAdapter.java
License:Open Source License
/** Deal with: INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC, INVOKEINTERFACE. */ @Override//from w ww .j a v a2 s . co m public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { mv.visitMethodInsn(opcode, owner, name, desc, itf); if (owner.equals("sun/misc/Unsafe")) { throw new InstrumentationUnsafeError(); } if (opcode == Opcodes.INVOKESPECIAL && name.equals("<init>") && waitForInit) { waitForInit = false; increment(INCREMENT_ALLOCATION); } }
From source file:uk.co.unclealex.executable.generator.jar.JarServiceImplTest.java
License:Apache License
protected byte[] generateClass(String className) { ClassWriter cw = new ClassWriter(0); MethodVisitor mv;//from www. j a v a 2 s . c om cw.visit(Opcodes.V1_7, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, className.replace('.', '/'), null, "java/lang/Object", null); mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null, null); mv.visitCode(); mv.visitVarInsn(Opcodes.ALOAD, 0); mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object", "<init>", "()V"); mv.visitInsn(Opcodes.RETURN); mv.visitMaxs(1, 1); mv.visitEnd(); mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "execute", "()Ljava/lang/String;", null, null); mv.visitCode(); mv.visitLdcInsn(className); mv.visitInsn(Opcodes.ARETURN); mv.visitMaxs(1, 1); mv.visitEnd(); cw.visitEnd(); return cw.toByteArray(); }
From source file:xt.to.cs.mixmaster.MixMaster.java
@SuppressWarnings("unchecked") public void generate() { cv.visit(version, access, name, signature, superName, interfaces.toArray(new String[] {})); for (ClassNode node : nodes) node.accept(mixAdapter);/*w w w . jav a 2s . co m*/ String[] exceptions = new String[initNode.exceptions.size()]; initNode.exceptions.toArray(exceptions); MethodVisitor mv = cv.visitMethod(access, initNode.name, initNode.desc, initNode.signature, exceptions); initNode.accept(new AdviceAdapter(mv, initNode.access, initNode.name, initNode.desc) { @Override protected void onMethodEnter() { for (String initMethod : initMethods) { visitIntInsn(ALOAD, 0); visitMethodInsn(Opcodes.INVOKESPECIAL, MixMaster.this.name, initMethod, initNode.desc); } } }); cv.visitEnd(); }