package nebula.asm;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
public class EntityFunctionSampleDump extends ClassLoader implements Opcodes {
public static byte[] dump () throws Exception {
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
MethodVisitor mv;
cw.visit(51, ACC_PUBLIC + ACC_SUPER, "nebula/asm/EntityFunctionSample1", "Ljava/lang/Object;Lcom/google/common/base/Function<Lnebula/data/Entity;Ljava/lang/Boolean;>;", "java/lang/Object", new String[] { "com/google/common/base/Function" });
// cw.visitSource("EntityFunctionSample1.java", null);
{
mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
mv.visitInsn(RETURN);
mv.visitMaxs(0, 0);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC, "apply", "(Lnebula/data/Entity;)Ljava/lang/Boolean;", null, null);
mv.visitCode();
mv.visitInsn(ICONST_0);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Boolean", "valueOf", "(Z)Ljava/lang/Boolean;");
mv.visitInsn(ARETURN);
mv.visitMaxs(0, 0);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_BRIDGE + ACC_SYNTHETIC, "apply", "(Ljava/lang/Object;)Ljava/lang/Object;", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitTypeInsn(CHECKCAST, "nebula/data/Entity");
mv.visitMethodInsn(INVOKEVIRTUAL, "nebula/asm/EntityFunctionSample1", "apply", "(Lnebula/data/Entity;)Ljava/lang/Boolean;");
mv.visitInsn(ARETURN);
mv.visitMaxs(0, 0);
mv.visitEnd();
}
cw.visitEnd();
return cw.toByteArray();
}
public void cp() throws Exception {
byte[] bt = dump();
Class<?> clz= this.defineClass("nebula.asm.EntityFunctionSample1", bt,0,bt.length);
clz.newInstance();
}
public static void main(String[] args) {
try {
new EntityFunctionSampleDump().cp();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}