package test;
import org.objectweb.asm.*;
public class TreeNodeDump implements Opcodes {
public static byte[] dump() throws Exception {
ClassWriter cw = new ClassWriter(0);
FieldVisitor fv;
MethodVisitor mv;
AnnotationVisitor av0;
cw.visit(V1_3, ACC_PUBLIC, "TreeNode", null, "java/lang/Object",
new String[] { "groovy/lang/GroovyObject" });
{
fv = cw.visitField(ACC_PUBLIC + ACC_FINAL + ACC_STATIC
+ ACC_SYNTHETIC, "$ownClass", "Ljava/lang/Class;", null,
null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE, "left", "Ljava/lang/Object;", null,
null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE, "right", "Ljava/lang/Object;",
null, null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE, "item", "I", null, null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE + ACC_FINAL + ACC_STATIC
+ ACC_SYNTHETIC, "$const$0", "Ljava/lang/Integer;", null,
null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE + ACC_FINAL + ACC_STATIC
+ ACC_SYNTHETIC, "$const$1", "Ljava/lang/Integer;", null,
null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE + ACC_FINAL + ACC_STATIC
+ ACC_SYNTHETIC, "$const$2", "Ljava/lang/Integer;", null,
null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE + ACC_FINAL + ACC_STATIC
+ ACC_SYNTHETIC, "$const$3", "Ljava/lang/Integer;", null,
null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE + ACC_FINAL + ACC_STATIC
+ ACC_SYNTHETIC, "$const$4", "Ljava/lang/Integer;", null,
null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PUBLIC + ACC_STATIC, "$staticMetaClass",
"Ljava/lang/ref/SoftReference;", null, null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE + ACC_TRANSIENT, "metaClass",
"Lgroovy/lang/MetaClass;", null, null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PUBLIC + ACC_STATIC, "__timeStamp",
"Ljava/lang/Long;", null, null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PUBLIC + ACC_STATIC,
"__timeStamp__239_neverHappen1216335190359",
"Ljava/lang/Long;", null, null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$class$TreeNode", "Ljava/lang/Class;", null, null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$class$java$lang$Class", "Ljava/lang/Class;", null, null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$class$java$lang$Long", "Ljava/lang/Class;", null, null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$class$groovy$lang$MetaClass", "Ljava/lang/Class;", null,
null);
fv.visitEnd();
}
{
fv = cw
.visitField(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$class$java$lang$Integer", "Ljava/lang/Class;",
null, null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$class$java$lang$System", "Ljava/lang/Class;", null, null);
fv.visitEnd();
}
{
fv = cw.visitField(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$callSiteArray", "Ljava/lang/ref/SoftReference;", null,
null);
fv.visitEnd();
}
dump_init(cw);
dump_init2(cw);
dump_bottomUpTree(cw);
dump_itemCheck(cw);
dump_main(cw);
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "getProperty",
"(Ljava/lang/String;)Ljava/lang/Object;", null, null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,
"groovy/lang/GroovyRuntimeException");
mv.visitLabel(l0);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "$getCallSiteArray",
"()[Lorg/codehaus/groovy/runtime/callsite/CallSite;");
mv.visitVarInsn(ASTORE, 2);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKEVIRTUAL, "TreeNode", "getMetaClass",
"()Lgroovy/lang/MetaClass;");
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitMethodInsn(INVOKEINTERFACE, "groovy/lang/MetaClass",
"getProperty",
"(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;");
mv.visitInsn(ARETURN);
mv.visitInsn(RETURN);
Label l2 = new Label();
mv.visitLabel(l2);
Label l3 = new Label();
mv.visitJumpInsn(GOTO, l3);
mv.visitLabel(l1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unwrap",
"(Lgroovy/lang/GroovyRuntimeException;)Ljava/lang/Throwable;");
mv.visitInsn(ATHROW);
mv.visitLabel(l3);
mv.visitInsn(NOP);
mv.visitLocalVariable("this", "LTreeNode;", null, l0, l2, 0);
mv.visitLocalVariable("property", "Ljava/lang/String;", null, l0,
l2, 1);
mv.visitMaxs(3, 3);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "setProperty",
"(Ljava/lang/String;Ljava/lang/Object;)V", null, null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,
"groovy/lang/GroovyRuntimeException");
mv.visitLabel(l0);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "$getCallSiteArray",
"()[Lorg/codehaus/groovy/runtime/callsite/CallSite;");
mv.visitVarInsn(ASTORE, 3);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKEVIRTUAL, "TreeNode", "getMetaClass",
"()Lgroovy/lang/MetaClass;");
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitVarInsn(ALOAD, 2);
mv
.visitMethodInsn(INVOKEINTERFACE, "groovy/lang/MetaClass",
"setProperty",
"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V");
mv.visitInsn(RETURN);
mv.visitInsn(RETURN);
Label l2 = new Label();
mv.visitLabel(l2);
mv.visitInsn(RETURN);
Label l3 = new Label();
mv.visitJumpInsn(GOTO, l3);
mv.visitLabel(l1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unwrap",
"(Lgroovy/lang/GroovyRuntimeException;)Ljava/lang/Throwable;");
mv.visitInsn(ATHROW);
mv.visitLabel(l3);
mv.visitInsn(NOP);
mv.visitLocalVariable("this", "LTreeNode;", null, l0, l2, 0);
mv.visitLocalVariable("property", "Ljava/lang/String;", null, l0,
l2, 1);
mv.visitLocalVariable("value", "Ljava/lang/Object;", null, l0, l2,
2);
mv.visitMaxs(4, 4);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_STATIC, "<clinit>", "()V", null, null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,
"groovy/lang/GroovyRuntimeException");
mv.visitLabel(l0);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$java$lang$Class", "()Ljava/lang/Class;");
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"castToType",
"(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST, "java/lang/Class");
mv.visitInsn(DUP);
mv.visitTypeInsn(CHECKCAST, "java/lang/Class");
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "$ownClass",
"Ljava/lang/Class;");
mv.visitInsn(POP);
mv.visitTypeInsn(NEW, "java/lang/Integer");
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(0));
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Integer", "<init>",
"(I)V");
mv.visitInsn(DUP);
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "$const$0",
"Ljava/lang/Integer;");
mv.visitInsn(POP);
mv.visitTypeInsn(NEW, "java/lang/Integer");
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(1));
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Integer", "<init>",
"(I)V");
mv.visitInsn(DUP);
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "$const$1",
"Ljava/lang/Integer;");
mv.visitInsn(POP);
mv.visitTypeInsn(NEW, "java/lang/Integer");
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(2));
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Integer", "<init>",
"(I)V");
mv.visitInsn(DUP);
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "$const$2",
"Ljava/lang/Integer;");
mv.visitInsn(POP);
mv.visitTypeInsn(NEW, "java/lang/Integer");
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(10));
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Integer", "<init>",
"(I)V");
mv.visitInsn(DUP);
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "$const$3",
"Ljava/lang/Integer;");
mv.visitInsn(POP);
mv.visitTypeInsn(NEW, "java/lang/Integer");
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(4));
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Integer", "<init>",
"(I)V");
mv.visitInsn(DUP);
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "$const$4",
"Ljava/lang/Integer;");
mv.visitInsn(POP);
mv.visitTypeInsn(NEW, "java/lang/Long");
mv.visitInsn(DUP);
mv.visitLdcInsn(new Long(1216335190359L));
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Long", "<init>",
"(J)V");
mv.visitInsn(DUP);
mv.visitTypeInsn(CHECKCAST, "java/lang/Long");
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "__timeStamp",
"Ljava/lang/Long;");
mv.visitInsn(POP);
mv.visitTypeInsn(NEW, "java/lang/Long");
mv.visitInsn(DUP);
mv.visitLdcInsn(new Long(0L));
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Long", "<init>",
"(J)V");
mv.visitInsn(DUP);
mv.visitTypeInsn(CHECKCAST, "java/lang/Long");
mv.visitFieldInsn(PUTSTATIC, "TreeNode",
"__timeStamp__239_neverHappen1216335190359",
"Ljava/lang/Long;");
mv.visitInsn(POP);
mv.visitInsn(RETURN);
mv.visitInsn(RETURN);
Label l2 = new Label();
mv.visitJumpInsn(GOTO, l2);
mv.visitLabel(l1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unwrap",
"(Lgroovy/lang/GroovyRuntimeException;)Ljava/lang/Throwable;");
mv.visitInsn(ATHROW);
mv.visitLabel(l2);
mv.visitInsn(NOP);
mv.visitMaxs(4, 0);
mv.visitEnd();
}
{
mv = cw
.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC,
"this$2$bottomUpTree", "(II)Ljava/lang/Object;",
null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ILOAD, 1);
mv.visitVarInsn(ILOAD, 2);
mv.visitMethodInsn(INVOKESPECIAL, "TreeNode", "bottomUpTree",
"(II)Ljava/lang/Object;");
mv.visitInsn(ARETURN);
mv.visitMaxs(3, 3);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "super$1$wait",
"()V", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv
.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "wait",
"()V");
mv.visitInsn(RETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "super$1$toString",
"()Ljava/lang/String;", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "toString",
"()Ljava/lang/String;");
mv.visitInsn(ARETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "super$1$wait",
"(J)V", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(LLOAD, 1);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "wait",
"(J)V");
mv.visitInsn(RETURN);
mv.visitMaxs(3, 3);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "super$1$wait",
"(JI)V", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(LLOAD, 1);
mv.visitVarInsn(ILOAD, 3);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "wait",
"(JI)V");
mv.visitInsn(RETURN);
mv.visitMaxs(4, 4);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "super$1$notify",
"()V", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "notify",
"()V");
mv.visitInsn(RETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC,
"super$1$notifyAll", "()V", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "notifyAll",
"()V");
mv.visitInsn(RETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "super$1$getClass",
"()Ljava/lang/Class;", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "getClass",
"()Ljava/lang/Class;");
mv.visitInsn(ARETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "super$1$equals",
"(Ljava/lang/Object;)Z", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "equals",
"(Ljava/lang/Object;)Z");
mv.visitInsn(IRETURN);
mv.visitMaxs(2, 2);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "super$1$clone",
"()Ljava/lang/Object;", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "clone",
"()Ljava/lang/Object;");
mv.visitInsn(ARETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "super$1$hashCode",
"()I", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "hashCode",
"()I");
mv.visitInsn(IRETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "super$1$finalize",
"()V", null, null);
mv.visitCode();
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "finalize",
"()V");
mv.visitInsn(RETURN);
mv.visitMaxs(1, 1);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$get$$class$TreeNode", "()Ljava/lang/Class;", null, null);
mv.visitCode();
mv.visitFieldInsn(GETSTATIC, "TreeNode", "$class$TreeNode",
"Ljava/lang/Class;");
mv.visitInsn(DUP);
Label l0 = new Label();
mv.visitJumpInsn(IFNONNULL, l0);
mv.visitInsn(POP);
mv.visitLdcInsn("TreeNode");
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "class$",
"(Ljava/lang/String;)Ljava/lang/Class;");
mv.visitInsn(DUP);
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "$class$TreeNode",
"Ljava/lang/Class;");
mv.visitLabel(l0);
mv.visitInsn(ARETURN);
mv.visitMaxs(2, 0);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$get$$class$java$lang$Class", "()Ljava/lang/Class;", null,
null);
mv.visitCode();
mv.visitFieldInsn(GETSTATIC, "TreeNode", "$class$java$lang$Class",
"Ljava/lang/Class;");
mv.visitInsn(DUP);
Label l0 = new Label();
mv.visitJumpInsn(IFNONNULL, l0);
mv.visitInsn(POP);
mv.visitLdcInsn("java.lang.Class");
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "class$",
"(Ljava/lang/String;)Ljava/lang/Class;");
mv.visitInsn(DUP);
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "$class$java$lang$Class",
"Ljava/lang/Class;");
mv.visitLabel(l0);
mv.visitInsn(ARETURN);
mv.visitMaxs(2, 0);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$get$$class$java$lang$Long", "()Ljava/lang/Class;", null,
null);
mv.visitCode();
mv.visitFieldInsn(GETSTATIC, "TreeNode", "$class$java$lang$Long",
"Ljava/lang/Class;");
mv.visitInsn(DUP);
Label l0 = new Label();
mv.visitJumpInsn(IFNONNULL, l0);
mv.visitInsn(POP);
mv.visitLdcInsn("java.lang.Long");
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "class$",
"(Ljava/lang/String;)Ljava/lang/Class;");
mv.visitInsn(DUP);
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "$class$java$lang$Long",
"Ljava/lang/Class;");
mv.visitLabel(l0);
mv.visitInsn(ARETURN);
mv.visitMaxs(2, 0);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$get$$class$groovy$lang$MetaClass", "()Ljava/lang/Class;",
null, null);
mv.visitCode();
mv.visitFieldInsn(GETSTATIC, "TreeNode",
"$class$groovy$lang$MetaClass", "Ljava/lang/Class;");
mv.visitInsn(DUP);
Label l0 = new Label();
mv.visitJumpInsn(IFNONNULL, l0);
mv.visitInsn(POP);
mv.visitLdcInsn("groovy.lang.MetaClass");
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "class$",
"(Ljava/lang/String;)Ljava/lang/Class;");
mv.visitInsn(DUP);
mv.visitFieldInsn(PUTSTATIC, "TreeNode",
"$class$groovy$lang$MetaClass", "Ljava/lang/Class;");
mv.visitLabel(l0);
mv.visitInsn(ARETURN);
mv.visitMaxs(2, 0);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$get$$class$java$lang$Integer", "()Ljava/lang/Class;",
null, null);
mv.visitCode();
mv.visitFieldInsn(GETSTATIC, "TreeNode",
"$class$java$lang$Integer", "Ljava/lang/Class;");
mv.visitInsn(DUP);
Label l0 = new Label();
mv.visitJumpInsn(IFNONNULL, l0);
mv.visitInsn(POP);
mv.visitLdcInsn("java.lang.Integer");
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "class$",
"(Ljava/lang/String;)Ljava/lang/Class;");
mv.visitInsn(DUP);
mv.visitFieldInsn(PUTSTATIC, "TreeNode",
"$class$java$lang$Integer", "Ljava/lang/Class;");
mv.visitLabel(l0);
mv.visitInsn(ARETURN);
mv.visitMaxs(2, 0);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$get$$class$java$lang$System", "()Ljava/lang/Class;",
null, null);
mv.visitCode();
mv.visitFieldInsn(GETSTATIC, "TreeNode", "$class$java$lang$System",
"Ljava/lang/Class;");
mv.visitInsn(DUP);
Label l0 = new Label();
mv.visitJumpInsn(IFNONNULL, l0);
mv.visitInsn(POP);
mv.visitLdcInsn("java.lang.System");
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "class$",
"(Ljava/lang/String;)Ljava/lang/Class;");
mv.visitInsn(DUP);
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "$class$java$lang$System",
"Ljava/lang/Class;");
mv.visitLabel(l0);
mv.visitInsn(ARETURN);
mv.visitMaxs(2, 0);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_STATIC + ACC_SYNTHETIC, "class$",
"(Ljava/lang/String;)Ljava/lang/Class;", null, null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,
"java/lang/ClassNotFoundException");
mv.visitLabel(l0);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Class", "forName",
"(Ljava/lang/String;)Ljava/lang/Class;");
mv.visitInsn(ARETURN);
mv.visitLabel(l1);
mv.visitVarInsn(ASTORE, 1);
mv.visitTypeInsn(NEW, "java/lang/NoClassDefFoundError");
mv.visitInsn(DUP);
mv.visitVarInsn(ALOAD, 1);
mv.visitMethodInsn(INVOKEVIRTUAL,
"java/lang/ClassNotFoundException", "getMessage",
"()Ljava/lang/String;");
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/NoClassDefFoundError",
"<init>", "(Ljava/lang/String;)V");
mv.visitInsn(ATHROW);
mv.visitMaxs(3, 2);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$createCallSiteArray",
"()Lorg/codehaus/groovy/runtime/callsite/CallSiteArray;",
null, null);
mv.visitCode();
mv.visitTypeInsn(NEW,
"org/codehaus/groovy/runtime/callsite/CallSiteArray");
mv.visitInsn(DUP);
mv.visitFieldInsn(GETSTATIC, "TreeNode", "$ownClass",
"Ljava/lang/Class;");
mv.visitLdcInsn(new Integer(40));
mv.visitTypeInsn(ANEWARRAY, "java/lang/String");
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(0));
mv.visitLdcInsn("minus");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(1));
mv.visitLdcInsn("multiply");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(2));
mv.visitLdcInsn("<$constructor$>");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(3));
mv.visitLdcInsn("bottomUpTree");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(4));
mv.visitLdcInsn("minus");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(5));
mv.visitLdcInsn("bottomUpTree");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(6));
mv.visitLdcInsn("<$constructor$>");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(7));
mv.visitLdcInsn("minus");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(8));
mv.visitLdcInsn("plus");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(9));
mv.visitLdcInsn("itemCheck");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(10));
mv.visitLdcInsn("itemCheck");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(11));
mv.visitLdcInsn("currentTimeMillis");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(12));
mv.visitLdcInsn("length");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(13));
mv.visitLdcInsn("toInteger");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(14));
mv.visitLdcInsn("getAt");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(15));
mv.visitLdcInsn("max");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(16));
mv.visitLdcInsn("plus");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(17));
mv.visitLdcInsn("plus");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(18));
mv.visitLdcInsn("itemCheck");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(19));
mv.visitLdcInsn("bottomUpTree");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(20));
mv.visitLdcInsn("println");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(21));
mv.visitLdcInsn("bottomUpTree");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(22));
mv.visitLdcInsn("leftShift");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(23));
mv.visitLdcInsn("plus");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(24));
mv.visitLdcInsn("minus");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(25));
mv.visitLdcInsn("iterator");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(26));
mv.visitLdcInsn("plus");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(27));
mv.visitLdcInsn("itemCheck");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(28));
mv.visitLdcInsn("bottomUpTree");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(29));
mv.visitLdcInsn("plus");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(30));
mv.visitLdcInsn("itemCheck");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(31));
mv.visitLdcInsn("bottomUpTree");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(32));
mv.visitLdcInsn("println");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(33));
mv.visitLdcInsn("multiply");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(34));
mv.visitLdcInsn("plus");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(35));
mv.visitLdcInsn("currentTimeMillis");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(36));
mv.visitLdcInsn("println");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(37));
mv.visitLdcInsn("itemCheck");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(38));
mv.visitLdcInsn("println");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitLdcInsn(new Integer(39));
mv.visitLdcInsn("minus");
mv.visitInsn(AASTORE);
mv.visitMethodInsn(INVOKESPECIAL,
"org/codehaus/groovy/runtime/callsite/CallSiteArray",
"<init>", "(Ljava/lang/Class;[Ljava/lang/String;)V");
mv.visitInsn(ARETURN);
mv.visitMaxs(7, 0);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PRIVATE + ACC_STATIC + ACC_SYNTHETIC,
"$getCallSiteArray",
"()[Lorg/codehaus/groovy/runtime/callsite/CallSite;", null,
null);
mv.visitCode();
mv.visitFieldInsn(GETSTATIC, "TreeNode", "$callSiteArray",
"Ljava/lang/ref/SoftReference;");
Label l0 = new Label();
mv.visitJumpInsn(IFNULL, l0);
mv.visitFieldInsn(GETSTATIC, "TreeNode", "$callSiteArray",
"Ljava/lang/ref/SoftReference;");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/ref/SoftReference",
"get", "()Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST,
"org/codehaus/groovy/runtime/callsite/CallSiteArray");
mv.visitInsn(DUP);
mv.visitVarInsn(ASTORE, 0);
Label l1 = new Label();
mv.visitJumpInsn(IFNONNULL, l1);
mv.visitLabel(l0);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$createCallSiteArray",
"()Lorg/codehaus/groovy/runtime/callsite/CallSiteArray;");
mv.visitVarInsn(ASTORE, 0);
mv.visitTypeInsn(NEW, "java/lang/ref/SoftReference");
mv.visitInsn(DUP);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/ref/SoftReference",
"<init>", "(Ljava/lang/Object;)V");
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "$callSiteArray",
"Ljava/lang/ref/SoftReference;");
mv.visitLabel(l1);
mv.visitVarInsn(ALOAD, 0);
mv
.visitFieldInsn(
GETFIELD,
"org/codehaus/groovy/runtime/callsite/CallSiteArray",
"array",
"[Lorg/codehaus/groovy/runtime/callsite/CallSite;");
mv.visitInsn(ARETURN);
mv.visitMaxs(3, 1);
mv.visitEnd();
}
cw.visitEnd();
return cw.toByteArray();
}
private static void dump_main(ClassWriter cw) {
MethodVisitor mv;
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC + ACC_VARARGS, "main",
"([Ljava/lang/String;)V", null, null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,"groovy/lang/GroovyRuntimeException");
mv.visitLabel(l0);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "$getCallSiteArray","()[Lorg/codehaus/groovy/runtime/callsite/CallSite;");
mv.visitVarInsn(ASTORE, 1);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(11));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode","$get$$class$java$lang$System", "()Ljava/lang/Class;");
mv.visitMethodInsn(INVOKEINTERFACE,"org/codehaus/groovy/runtime/callsite/CallSite", "call", "(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST, "java/lang/Long");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Long", "longValue","()J");
mv.visitVarInsn(LSTORE, 2);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(12));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"callGetProperty",
"(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitInsn(ICONST_0);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"compareEqual", "(Ljava/lang/Object;Ljava/lang/Object;)Z");
Label l2 = new Label();
mv.visitJumpInsn(IFEQ, l2);
mv.visitIntInsn(BIPUSH, 10);
Label l3 = new Label();
mv.visitJumpInsn(GOTO, l3);
mv.visitLabel(l2);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(13));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(14));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(ICONST_0);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitLabel(l3);
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue",
"()I");
mv.visitVarInsn(ISTORE, 4);
mv.visitInsn(ICONST_4);
mv.visitVarInsn(ISTORE, 5);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(15));
mv.visitInsn(AALOAD);
mv.visitInsn(ICONST_2);
mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_0);
mv.visitVarInsn(ILOAD, 5);
mv.visitInsn(ICONST_2);
mv.visitInsn(IADD);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_1);
mv.visitVarInsn(ILOAD, 4);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitInsn(AASTORE);
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"createList", "([Ljava/lang/Object;)Ljava/util/List;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue",
"()I");
mv.visitVarInsn(ISTORE, 6);
mv.visitVarInsn(ILOAD, 6);
mv.visitInsn(ICONST_1);
mv.visitInsn(IADD);
mv.visitVarInsn(ISTORE, 7);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(18));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(19));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitInsn(ICONST_0);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitVarInsn(ILOAD, 7);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"call",
"(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue",
"()I");
mv.visitVarInsn(ISTORE, 8);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(20));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitTypeInsn(NEW, "org/codehaus/groovy/runtime/GStringImpl");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_2);
mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_0);
mv.visitVarInsn(ILOAD, 7);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_1);
mv.visitVarInsn(ILOAD, 8);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitInsn(AASTORE);
mv.visitInsn(ICONST_3);
mv.visitTypeInsn(ANEWARRAY, "java/lang/String");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_0);
mv.visitLdcInsn("stretch tree of depth ");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_1);
mv.visitLdcInsn("\u0009 check: ");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_2);
mv.visitLdcInsn("");
mv.visitInsn(AASTORE);
mv.visitMethodInsn(INVOKESPECIAL,
"org/codehaus/groovy/runtime/GStringImpl", "<init>",
"([Ljava/lang/Object;[Ljava/lang/String;)V");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"callStatic",
"(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitInsn(POP);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(21));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitInsn(ICONST_0);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitVarInsn(ILOAD, 6);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"call",
"(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitVarInsn(ASTORE, 9);
mv.visitVarInsn(ILOAD, 5);
mv.visitVarInsn(ISTORE, 10);
Label l4 = new Label();
mv.visitLabel(l4);
mv.visitVarInsn(ILOAD, 10);
mv.visitVarInsn(ILOAD, 6);
Label l5 = new Label();
mv.visitJumpInsn(IF_ICMPGT, l5);
mv.visitInsn(ICONST_1);
mv.visitVarInsn(ILOAD, 6);
mv.visitVarInsn(ILOAD, 10);
mv.visitInsn(ISUB);
mv.visitVarInsn(ILOAD, 5);
mv.visitInsn(IADD);
mv.visitInsn(ISHL);
mv.visitVarInsn(ISTORE, 11);
mv.visitInsn(ICONST_0);
mv.visitInsn(DUP);
mv.visitVarInsn(ISTORE, 8);
mv.visitInsn(POP);
mv.visitInsn(ACONST_NULL);
mv.visitVarInsn(ASTORE, 13);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(25));
mv.visitInsn(AALOAD);
mv.visitInsn(ICONST_1);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitVarInsn(ILOAD, 11);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitInsn(ICONST_1);
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"createRange",
"(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/util/List;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitVarInsn(ASTORE, 14);
Label l6 = new Label();
mv.visitLabel(l6);
mv.visitVarInsn(ALOAD, 14);
mv.visitTypeInsn(CHECKCAST, "java/util/Iterator");
mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator",
"hasNext", "()Z");
Label l7 = new Label();
mv.visitJumpInsn(IFEQ, l7);
mv.visitVarInsn(ALOAD, 14);
mv.visitTypeInsn(CHECKCAST, "java/util/Iterator");
mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next",
"()Ljava/lang/Object;");
mv.visitVarInsn(ASTORE, 13);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(26));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ILOAD, 8);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(27));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(28));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitVarInsn(ALOAD, 13);
mv.visitVarInsn(ILOAD, 10);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"call",
"(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitInsn(DUP);
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue",
"()I");
mv.visitVarInsn(ISTORE, 8);
mv.visitInsn(POP);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(29));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ILOAD, 8);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(30));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(31));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitVarInsn(ALOAD, 13);
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unaryMinus", "(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitVarInsn(ILOAD, 10);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"call",
"(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitInsn(DUP);
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Integer", "intValue",
"()I");
mv.visitVarInsn(ISTORE, 8);
mv.visitInsn(POP);
mv.visitJumpInsn(GOTO, l6);
mv.visitLabel(l7);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(32));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitTypeInsn(NEW, "org/codehaus/groovy/runtime/GStringImpl");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_3);
mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_0);
mv.visitVarInsn(ILOAD, 11);
mv.visitInsn(ICONST_2);
mv.visitInsn(IMUL);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_1);
mv.visitVarInsn(ILOAD, 10);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_2);
mv.visitVarInsn(ILOAD, 8);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitInsn(AASTORE);
mv.visitInsn(ICONST_4);
mv.visitTypeInsn(ANEWARRAY, "java/lang/String");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_0);
mv.visitLdcInsn("");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_1);
mv.visitLdcInsn("\u0009 trees of depth ");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_2);
mv.visitLdcInsn("\u0009 check: ");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_3);
mv.visitLdcInsn("");
mv.visitInsn(AASTORE);
mv.visitMethodInsn(INVOKESPECIAL,
"org/codehaus/groovy/runtime/GStringImpl", "<init>",
"([Ljava/lang/Object;[Ljava/lang/String;)V");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"callStatic",
"(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitInsn(POP);
mv.visitVarInsn(ILOAD, 10);
mv.visitInsn(ICONST_2);
mv.visitInsn(IADD);
mv.visitInsn(DUP);
mv.visitVarInsn(ISTORE, 10);
mv.visitInsn(POP);
mv.visitJumpInsn(GOTO, l4);
mv.visitLabel(l5);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(35));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$java$lang$System", "()Ljava/lang/Class;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST, "java/lang/Long");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Long", "longValue",
"()J");
mv.visitVarInsn(LSTORE, 11);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(36));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitTypeInsn(NEW, "org/codehaus/groovy/runtime/GStringImpl");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_2);
mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_0);
mv.visitVarInsn(ILOAD, 6);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Integer", "valueOf",
"(I)Ljava/lang/Integer;");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_1);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(37));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ALOAD, 9);
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitInsn(AASTORE);
mv.visitInsn(ICONST_3);
mv.visitTypeInsn(ANEWARRAY, "java/lang/String");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_0);
mv.visitLdcInsn("long lived tree of depth ");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_1);
mv.visitLdcInsn("\u0009 check: ");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_2);
mv.visitLdcInsn("");
mv.visitInsn(AASTORE);
mv.visitMethodInsn(INVOKESPECIAL,
"org/codehaus/groovy/runtime/GStringImpl", "<init>",
"([Ljava/lang/Object;[Ljava/lang/String;)V");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"callStatic",
"(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitInsn(POP);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(38));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitTypeInsn(NEW, "org/codehaus/groovy/runtime/GStringImpl");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_1);
mv.visitTypeInsn(ANEWARRAY, "java/lang/Object");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_0);
mv.visitVarInsn(LLOAD, 11);
mv.visitVarInsn(LLOAD, 2);
mv.visitInsn(LSUB);
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Long", "valueOf",
"(J)Ljava/lang/Long;");
mv.visitInsn(AASTORE);
mv.visitInsn(ICONST_2);
mv.visitTypeInsn(ANEWARRAY, "java/lang/String");
mv.visitInsn(DUP);
mv.visitInsn(ICONST_0);
mv.visitLdcInsn("");
mv.visitInsn(AASTORE);
mv.visitInsn(DUP);
mv.visitInsn(ICONST_1);
mv.visitLdcInsn("ms");
mv.visitInsn(AASTORE);
mv.visitMethodInsn(INVOKESPECIAL,
"org/codehaus/groovy/runtime/GStringImpl", "<init>",
"([Ljava/lang/Object;[Ljava/lang/String;)V");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"callStatic",
"(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitInsn(POP);
mv.visitInsn(RETURN);
mv.visitInsn(RETURN);
Label l8 = new Label();
mv.visitJumpInsn(GOTO, l8);
mv.visitLabel(l1);
mv.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unwrap",
"(Lgroovy/lang/GroovyRuntimeException;)Ljava/lang/Throwable;");
mv.visitInsn(ATHROW);
mv.visitLabel(l8);
mv.visitInsn(NOP);
mv.visitMaxs(0, 0);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PROTECTED + ACC_SYNTHETIC,
"$getStaticMetaClass", "()Lgroovy/lang/MetaClass;", null,
null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,
"groovy/lang/GroovyRuntimeException");
mv.visitLabel(l0);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "$getCallSiteArray",
"()[Lorg/codehaus/groovy/runtime/callsite/CallSite;");
mv.visitVarInsn(ASTORE, 1);
mv.visitFieldInsn(GETSTATIC, "TreeNode", "$staticMetaClass",
"Ljava/lang/ref/SoftReference;");
mv.visitVarInsn(ASTORE, 1);
mv.visitVarInsn(ALOAD, 1);
Label l2 = new Label();
mv.visitJumpInsn(IFNULL, l2);
mv.visitVarInsn(ALOAD, 1);
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/ref/SoftReference",
"get", "()Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST, "groovy/lang/MetaClass");
mv.visitInsn(DUP);
mv.visitVarInsn(ASTORE, 1);
Label l3 = new Label();
mv.visitJumpInsn(IFNONNULL, l3);
mv.visitLabel(l2);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Object", "getClass",
"()Ljava/lang/Class;");
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/InvokerHelper",
"getMetaClass",
"(Ljava/lang/Class;)Lgroovy/lang/MetaClass;");
mv.visitVarInsn(ASTORE, 1);
mv.visitTypeInsn(NEW, "java/lang/ref/SoftReference");
mv.visitInsn(DUP);
mv.visitVarInsn(ALOAD, 1);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/ref/SoftReference",
"<init>", "(Ljava/lang/Object;)V");
mv.visitFieldInsn(PUTSTATIC, "TreeNode", "$staticMetaClass",
"Ljava/lang/ref/SoftReference;");
mv.visitLabel(l3);
mv.visitVarInsn(ALOAD, 1);
mv.visitInsn(ARETURN);
mv.visitInsn(RETURN);
Label l4 = new Label();
mv.visitLabel(l4);
Label l5 = new Label();
mv.visitJumpInsn(GOTO, l5);
mv.visitLabel(l1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unwrap",
"(Lgroovy/lang/GroovyRuntimeException;)Ljava/lang/Throwable;");
mv.visitInsn(ATHROW);
mv.visitLabel(l5);
mv.visitInsn(NOP);
mv.visitLocalVariable("this", "LTreeNode;", null, l0, l4, 0);
mv.visitMaxs(3, 2);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "getMetaClass",
"()Lgroovy/lang/MetaClass;", null, null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,
"groovy/lang/GroovyRuntimeException");
mv.visitLabel(l0);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "$getCallSiteArray",
"()[Lorg/codehaus/groovy/runtime/callsite/CallSite;");
mv.visitVarInsn(ASTORE, 1);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, "TreeNode", "metaClass",
"Lgroovy/lang/MetaClass;");
mv.visitInsn(DUP);
Label l2 = new Label();
mv.visitJumpInsn(IFNULL, l2);
mv.visitInsn(ARETURN);
mv.visitLabel(l2);
mv.visitInsn(POP);
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(DUP);
mv.visitMethodInsn(INVOKEVIRTUAL, "TreeNode",
"$getStaticMetaClass", "()Lgroovy/lang/MetaClass;");
mv.visitFieldInsn(PUTFIELD, "TreeNode", "metaClass",
"Lgroovy/lang/MetaClass;");
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, "TreeNode", "metaClass",
"Lgroovy/lang/MetaClass;");
mv.visitInsn(ARETURN);
mv.visitInsn(RETURN);
Label l3 = new Label();
mv.visitLabel(l3);
Label l4 = new Label();
mv.visitJumpInsn(GOTO, l4);
mv.visitLabel(l1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unwrap",
"(Lgroovy/lang/GroovyRuntimeException;)Ljava/lang/Throwable;");
mv.visitInsn(ATHROW);
mv.visitLabel(l4);
mv.visitInsn(NOP);
mv.visitLocalVariable("this", "LTreeNode;", null, l0, l3, 0);
mv.visitMaxs(2, 2);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "setMetaClass",
"(Lgroovy/lang/MetaClass;)V", null, null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,
"groovy/lang/GroovyRuntimeException");
mv.visitLabel(l0);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "$getCallSiteArray",
"()[Lorg/codehaus/groovy/runtime/callsite/CallSite;");
mv.visitVarInsn(ASTORE, 2);
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitFieldInsn(PUTFIELD, "TreeNode", "metaClass",
"Lgroovy/lang/MetaClass;");
mv.visitInsn(RETURN);
Label l2 = new Label();
mv.visitLabel(l2);
mv.visitInsn(RETURN);
Label l3 = new Label();
mv.visitJumpInsn(GOTO, l3);
mv.visitLabel(l1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unwrap",
"(Lgroovy/lang/GroovyRuntimeException;)Ljava/lang/Throwable;");
mv.visitInsn(ATHROW);
mv.visitLabel(l3);
mv.visitInsn(NOP);
mv.visitLocalVariable("this", "LTreeNode;", null, l0, l2, 0);
mv.visitLocalVariable("mc", "Lgroovy/lang/MetaClass;", null, l0,
l2, 1);
mv.visitMaxs(2, 3);
mv.visitEnd();
}
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_SYNTHETIC, "invokeMethod",
"(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;",
null, null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,
"groovy/lang/GroovyRuntimeException");
mv.visitLabel(l0);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "$getCallSiteArray",
"()[Lorg/codehaus/groovy/runtime/callsite/CallSite;");
mv.visitVarInsn(ASTORE, 3);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKEVIRTUAL, "TreeNode", "getMetaClass",
"()Lgroovy/lang/MetaClass;");
mv.visitVarInsn(ALOAD, 0);
mv.visitVarInsn(ALOAD, 1);
mv.visitVarInsn(ALOAD, 2);
mv
.visitMethodInsn(INVOKEINTERFACE,
"groovy/lang/MetaObjectProtocol", "invokeMethod",
"(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitInsn(ARETURN);
mv.visitInsn(RETURN);
Label l2 = new Label();
mv.visitLabel(l2);
Label l3 = new Label();
mv.visitJumpInsn(GOTO, l3);
mv.visitLabel(l1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unwrap",
"(Lgroovy/lang/GroovyRuntimeException;)Ljava/lang/Throwable;");
mv.visitInsn(ATHROW);
mv.visitLabel(l3);
mv.visitInsn(NOP);
mv.visitLocalVariable("this", "LTreeNode;", null, l0, l2, 0);
mv.visitLocalVariable("method", "Ljava/lang/String;", null, l0, l2,
1);
mv.visitLocalVariable("arguments", "Ljava/lang/Object;", null, l0,
l2, 2);
mv.visitMaxs(4, 4);
mv.visitEnd();
}
}
private static void dump_itemCheck(ClassWriter cw) {
MethodVisitor mv;
{
mv = cw.visitMethod(ACC_PUBLIC, "itemCheck", "()I", null, null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,
"groovy/lang/GroovyRuntimeException");
mv.visitLabel(l0);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "$getCallSiteArray",
"()[Lorg/codehaus/groovy/runtime/callsite/CallSite;");
mv.visitVarInsn(ASTORE, 1);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, "TreeNode", "left",
"Ljava/lang/Object;");
mv.visitInsn(ACONST_NULL);
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"compareEqual", "(Ljava/lang/Object;Ljava/lang/Object;)Z");
Label l2 = new Label();
mv.visitJumpInsn(IFEQ, l2);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, "TreeNode", "item", "I");
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"box", "(I)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$java$lang$Integer", "()Ljava/lang/Class;");
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"castToType",
"(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"intUnbox", "(Ljava/lang/Object;)I");
mv.visitInsn(IRETURN);
Label l3 = new Label();
mv.visitJumpInsn(GOTO, l3);
mv.visitLabel(l2);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(7));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(8));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, "TreeNode", "item", "I");
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"box", "(I)Ljava/lang/Object;");
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(9));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, "TreeNode", "left",
"Ljava/lang/Object;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitVarInsn(ALOAD, 1);
mv.visitLdcInsn(new Integer(10));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, "TreeNode", "right",
"Ljava/lang/Object;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$java$lang$Integer", "()Ljava/lang/Class;");
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"castToType",
"(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"intUnbox", "(Ljava/lang/Object;)I");
mv.visitInsn(IRETURN);
mv.visitLabel(l3);
Label l4 = new Label();
mv.visitJumpInsn(GOTO, l4);
mv.visitLabel(l1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unwrap",
"(Lgroovy/lang/GroovyRuntimeException;)Ljava/lang/Throwable;");
mv.visitInsn(ATHROW);
mv.visitLabel(l4);
mv.visitInsn(NOP);
mv.visitMaxs(5, 2);
mv.visitEnd();
}
}
private static void dump_bottomUpTree(ClassWriter cw) {
MethodVisitor mv;
{
mv = cw.visitMethod(ACC_PRIVATE + ACC_STATIC, "bottomUpTree",
"(II)Ljava/lang/Object;", null, null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,
"groovy/lang/GroovyRuntimeException");
mv.visitLabel(l0);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "$getCallSiteArray",
"()[Lorg/codehaus/groovy/runtime/callsite/CallSite;");
mv.visitVarInsn(ASTORE, 2);
mv.visitVarInsn(ILOAD, 1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"box", "(I)Ljava/lang/Object;");
mv.visitFieldInsn(GETSTATIC, "TreeNode", "$const$0",
"Ljava/lang/Integer;");
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"compareGreaterThan",
"(Ljava/lang/Object;Ljava/lang/Object;)Z");
Label l2 = new Label();
mv.visitJumpInsn(IFEQ, l2);
mv.visitVarInsn(ALOAD, 2);
mv.visitLdcInsn(new Integer(0));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ILOAD, 1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"box", "(I)Ljava/lang/Object;");
mv.visitFieldInsn(GETSTATIC, "TreeNode", "$const$1",
"Ljava/lang/Integer;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitInsn(DUP);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"intUnbox", "(Ljava/lang/Object;)I");
mv.visitVarInsn(ISTORE, 1);
mv.visitInsn(POP);
mv.visitVarInsn(ALOAD, 2);
mv.visitLdcInsn(new Integer(1));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ILOAD, 0);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"box", "(I)Ljava/lang/Object;");
mv.visitFieldInsn(GETSTATIC, "TreeNode", "$const$2",
"Ljava/lang/Integer;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$java$lang$Integer", "()Ljava/lang/Class;");
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"castToType",
"(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST, "java/lang/Integer");
mv.visitVarInsn(ASTORE, 3);
mv.visitVarInsn(ALOAD, 2);
mv.visitLdcInsn(new Integer(2));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitVarInsn(ALOAD, 2);
mv.visitLdcInsn(new Integer(3));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitVarInsn(ALOAD, 2);
mv.visitLdcInsn(new Integer(4));
mv.visitInsn(AALOAD);
mv.visitVarInsn(ALOAD, 3);
mv.visitFieldInsn(GETSTATIC, "TreeNode", "$const$1",
"Ljava/lang/Integer;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite", "call",
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitVarInsn(ILOAD, 1);
mv.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"box", "(I)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"callStatic",
"(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitVarInsn(ALOAD, 2);
mv.visitLdcInsn(new Integer(5));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitVarInsn(ALOAD, 3);
mv.visitVarInsn(ILOAD, 1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"box", "(I)Ljava/lang/Object;");
mv
.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"callStatic",
"(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitVarInsn(ILOAD, 0);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"box", "(I)Ljava/lang/Object;");
mv
.visitMethodInsn(
INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"callConstructor",
"(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitInsn(ARETURN);
Label l3 = new Label();
mv.visitJumpInsn(GOTO, l3);
mv.visitLabel(l2);
mv.visitVarInsn(ALOAD, 2);
mv.visitLdcInsn(new Integer(6));
mv.visitInsn(AALOAD);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$TreeNode", "()Ljava/lang/Class;");
mv.visitVarInsn(ILOAD, 0);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"box", "(I)Ljava/lang/Object;");
mv.visitMethodInsn(INVOKEINTERFACE,
"org/codehaus/groovy/runtime/callsite/CallSite",
"callConstructor",
"(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
mv.visitInsn(ARETURN);
mv.visitLabel(l3);
Label l4 = new Label();
mv.visitJumpInsn(GOTO, l4);
mv.visitLabel(l1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unwrap",
"(Lgroovy/lang/GroovyRuntimeException;)Ljava/lang/Throwable;");
mv.visitInsn(ATHROW);
mv.visitLabel(l4);
mv.visitInsn(NOP);
mv.visitMaxs(7, 4);
mv.visitEnd();
}
}
private static void dump_init2(ClassWriter cw) {
MethodVisitor mv;
{
mv = cw.visitMethod(ACC_PUBLIC, "<init>",
"(Ljava/lang/Object;Ljava/lang/Object;I)V", null, null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,
"groovy/lang/GroovyRuntimeException");
mv.visitLabel(l0);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>",
"()V");
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "$getCallSiteArray",
"()[Lorg/codehaus/groovy/runtime/callsite/CallSite;");
mv.visitVarInsn(ASTORE, 4);
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(DUP);
mv.visitMethodInsn(INVOKEVIRTUAL, "TreeNode",
"$getStaticMetaClass", "()Lgroovy/lang/MetaClass;");
mv.visitFieldInsn(PUTFIELD, "TreeNode", "metaClass",
"Lgroovy/lang/MetaClass;");
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, "TreeNode", "metaClass",
"Lgroovy/lang/MetaClass;");
mv.visitInsn(DUP);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$groovy$lang$MetaClass", "()Ljava/lang/Class;");
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"castToType",
"(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST, "groovy/lang/MetaClass");
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(SWAP);
mv.visitFieldInsn(PUTFIELD, "TreeNode", "metaClass",
"Lgroovy/lang/MetaClass;");
mv.visitInsn(POP);
mv.visitVarInsn(ALOAD, 1);
mv.visitInsn(DUP);
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(SWAP);
mv.visitFieldInsn(PUTFIELD, "TreeNode", "left",
"Ljava/lang/Object;");
mv.visitInsn(POP);
mv.visitVarInsn(ALOAD, 2);
mv.visitInsn(DUP);
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(SWAP);
mv.visitFieldInsn(PUTFIELD, "TreeNode", "right",
"Ljava/lang/Object;");
mv.visitInsn(POP);
mv.visitVarInsn(ILOAD, 3);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"box", "(I)Ljava/lang/Object;");
mv.visitInsn(DUP);
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(SWAP);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"intUnbox", "(Ljava/lang/Object;)I");
mv.visitFieldInsn(PUTFIELD, "TreeNode", "item", "I");
mv.visitInsn(POP);
mv.visitInsn(RETURN);
Label l2 = new Label();
mv.visitJumpInsn(GOTO, l2);
mv.visitLabel(l1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unwrap",
"(Lgroovy/lang/GroovyRuntimeException;)Ljava/lang/Throwable;");
mv.visitInsn(ATHROW);
mv.visitLabel(l2);
mv.visitInsn(NOP);
mv.visitMaxs(3, 5);
mv.visitEnd();
}
}
private static void dump_init(ClassWriter cw) {
MethodVisitor mv;
{
mv = cw.visitMethod(ACC_PUBLIC, "<init>", "(I)V", null, null);
mv.visitCode();
Label l0 = new Label();
Label l1 = new Label();
mv.visitTryCatchBlock(l0, l1, l1,
"groovy/lang/GroovyRuntimeException");
mv.visitLabel(l0);
mv.visitVarInsn(ALOAD, 0);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>",
"()V");
mv.visitMethodInsn(INVOKESTATIC, "TreeNode", "$getCallSiteArray",
"()[Lorg/codehaus/groovy/runtime/callsite/CallSite;");
mv.visitVarInsn(ASTORE, 2);
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(DUP);
mv.visitMethodInsn(INVOKEVIRTUAL, "TreeNode",
"$getStaticMetaClass", "()Lgroovy/lang/MetaClass;");
mv.visitFieldInsn(PUTFIELD, "TreeNode", "metaClass",
"Lgroovy/lang/MetaClass;");
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, "TreeNode", "metaClass",
"Lgroovy/lang/MetaClass;");
mv.visitInsn(DUP);
mv.visitMethodInsn(INVOKESTATIC, "TreeNode",
"$get$$class$groovy$lang$MetaClass", "()Ljava/lang/Class;");
mv.visitMethodInsn(INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"castToType",
"(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;");
mv.visitTypeInsn(CHECKCAST, "groovy/lang/MetaClass");
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(SWAP);
mv.visitFieldInsn(PUTFIELD, "TreeNode", "metaClass",
"Lgroovy/lang/MetaClass;");
mv.visitInsn(POP);
mv.visitVarInsn(ILOAD, 1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"box", "(I)Ljava/lang/Object;");
mv.visitInsn(DUP);
mv.visitVarInsn(ALOAD, 0);
mv.visitInsn(SWAP);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation",
"intUnbox", "(Ljava/lang/Object;)I");
mv.visitFieldInsn(PUTFIELD, "TreeNode", "item", "I");
mv.visitInsn(POP);
mv.visitInsn(RETURN);
Label l2 = new Label();
mv.visitJumpInsn(GOTO, l2);
mv.visitLabel(l1);
mv
.visitMethodInsn(
INVOKESTATIC,
"org/codehaus/groovy/runtime/ScriptBytecodeAdapter",
"unwrap",
"(Lgroovy/lang/GroovyRuntimeException;)Ljava/lang/Throwable;");
mv.visitInsn(ATHROW);
mv.visitLabel(l2);
mv.visitInsn(NOP);
mv.visitMaxs(3, 3);
mv.visitEnd();
}
}
}