diff --git a/build.xml b/build.xml index ba1e4f2e..9eb83caf 100644 --- a/build.xml +++ b/build.xml @@ -3,7 +3,7 @@ - + @@ -11,9 +11,9 @@ - + - ", "()V", null, null); // super() m.visitVarInsn(ALOAD, 0); - m.visitMethodInsn(INVOKESPECIAL, parent, "", "()V"); + m.visitMethodInsn(INVOKESPECIAL, parent, "", "()V", false); m.visitInsn(RETURN); m.visitMaxs(0, 0); m.visitEnd(); @@ -316,7 +316,7 @@ void captureCast(String type) { void visitInit(String type, String descr) { insn(-2); - m.visitMethodInsn(INVOKESPECIAL, type, "", descr); + m.visitMethodInsn(INVOKESPECIAL, type, "", descr, false); lastType = type; } @@ -340,7 +340,7 @@ void fieldInsn(int opcode, String owner, String name, String desc) { void methodInsn(int opcode, String owner, String name, String desc) { insn(-1); - m.visitMethodInsn(opcode, owner, name, desc); + m.visitMethodInsn(opcode, owner, name, desc, opcode == INVOKEINTERFACE); } void visitApply(Code arg, int line) { @@ -348,7 +348,7 @@ void visitApply(Code arg, int line) { insn(-1); visitLine(line); m.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/Fun", - "apply", "(Ljava/lang/Object;)Ljava/lang/Object;"); + "apply", "(Ljava/lang/Object;)Ljava/lang/Object;", false); } void jumpInsn(int opcode, Label label) { diff --git a/util/Rename.java b/util/Rename.java index 9b619b43..ab9fae5a 100644 --- a/util/Rename.java +++ b/util/Rename.java @@ -59,7 +59,7 @@ public static void main(String[] args) throws Exception { JarFile in = new JarFile(args[0]); JarOutputStream out = new JarOutputStream(new FileOutputStream(args[1])); - byte[] buf = new byte[65536]; + byte[] buf = new byte[0x20000]; for (Enumeration e = in.entries(); e.hasMoreElements();) { ZipEntry z = (ZipEntry) e.nextElement(); if (z.isDirectory()) diff --git a/util/SpecialLib.java b/util/SpecialLib.java index a3a7d840..6cc1b196 100644 --- a/util/SpecialLib.java +++ b/util/SpecialLib.java @@ -33,9 +33,9 @@ import java.io.*; import yeti.renamed.asm3.*; -class LListAdapter extends ClassAdapter implements Opcodes { +class LListAdapter extends ClassVisitor implements Opcodes { LListAdapter(ClassVisitor cv) { - super(cv); + super(ASM5, cv); } public MethodVisitor visitMethod(int access, String name, String desc, @@ -58,7 +58,7 @@ public void visitEnd() { mv.visitLabel(retry); mv.visitIincInsn(0, 1); mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/AIter", - "next", "()Lyeti/lang/AIter;"); + "next", "()Lyeti/lang/AIter;", false); mv.visitInsn(DUP); mv.visitJumpInsn(IFNONNULL, retry); mv.visitLabel(end); @@ -79,12 +79,13 @@ public void visitEnd() { mv.visitLabel(retry = new Label()); mv.visitInsn(DUP2); // fun iter fun iter mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/AIter", - "first", "()Ljava/lang/Object;"); + "first", "()Ljava/lang/Object;", false); mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/Fun", - "apply", "(Ljava/lang/Object;)Ljava/lang/Object;"); + "apply", "(Ljava/lang/Object;)Ljava/lang/Object;", + false); mv.visitInsn(POP); mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/AIter", - "next", "()Lyeti/lang/AIter;"); + "next", "()Lyeti/lang/AIter;", false); mv.visitInsn(DUP); mv.visitJumpInsn(IFNONNULL, retry); mv.visitLabel(end); @@ -105,12 +106,12 @@ public void visitEnd() { mv.visitInsn(SWAP); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/AIter", - "first", "()Ljava/lang/Object;"); + "first", "()Ljava/lang/Object;", false); mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/Fun", "apply", - "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); + "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", false); mv.visitVarInsn(ALOAD, 0); mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/AIter", - "next", "()Lyeti/lang/AIter;"); + "next", "()Lyeti/lang/AIter;", false); mv.visitInsn(DUP); mv.visitVarInsn(ASTORE, 0); mv.visitJumpInsn(IFNONNULL, retry); @@ -129,20 +130,20 @@ public void visitEnd() { mv.visitTypeInsn(NEW, "yeti/lang/MList"); mv.visitInsn(DUP); mv.visitMethodInsn(INVOKESPECIAL, "yeti/lang/MList", - "", "()V"); + "", "()V", false); mv.visitVarInsn(ASTORE, 0); mv.visitLabel(retry = new Label()); mv.visitInsn(DUP2); // fun iter fun iter mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/AIter", - "first", "()Ljava/lang/Object;"); // i -> v - mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/Fun", // f v -> v' - "apply", "(Ljava/lang/Object;)Ljava/lang/Object;"); + "first", "()Ljava/lang/Object;", false); // i -> v + mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/Fun", "apply", // f v -> v' + "(Ljava/lang/Object;)Ljava/lang/Object;", false); mv.visitVarInsn(ALOAD, 0); mv.visitInsn(SWAP); - mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/MList", - "add", "(Ljava/lang/Object;)V"); // l v' -> () - mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/AIter", - "next", "()Lyeti/lang/AIter;"); // i -> i' + mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/MList", "add", + "(Ljava/lang/Object;)V", false); // l v' -> () + mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/AIter", "next", + "()Lyeti/lang/AIter;", false); // i -> i' mv.visitInsn(DUP); mv.visitJumpInsn(IFNONNULL, retry); mv.visitVarInsn(ALOAD, 0); @@ -160,7 +161,7 @@ public void visitEnd() { mv.visitInsn(ACONST_NULL); mv.visitVarInsn(ASTORE, 0); mv.visitMethodInsn(INVOKESPECIAL, "yeti/lang/MList", - "", "(Lyeti/lang/AIter;)V"); + "", "(Lyeti/lang/AIter;)V", false); mv.visitInsn(ARETURN); mv.visitMaxs(0, 0); mv.visitEnd(); @@ -176,7 +177,7 @@ public void visitEnd() { mv.visitVarInsn(ILOAD, 1); mv.visitJumpInsn(IFLE, drop); mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/AList", - "rest", "()Lyeti/lang/AList;"); // i -> i' + "rest", "()Lyeti/lang/AList;", false); // i -> i' mv.visitIincInsn(1, -1); mv.visitInsn(DUP); mv.visitJumpInsn(IFNONNULL, retry); @@ -186,8 +187,8 @@ public void visitEnd() { mv.visitVarInsn(ILOAD, 2); mv.visitJumpInsn(IFLT, end = new Label()); mv.visitVarInsn(ILOAD, 2); - mv.visitMethodInsn(INVOKESTATIC, "yeti/lang/TakeList", - "take", "(Lyeti/lang/AIter;I)Lyeti/lang/AList;"); + mv.visitMethodInsn(INVOKESTATIC, "yeti/lang/TakeList", "take", + "(Lyeti/lang/AIter;I)Lyeti/lang/AList;", false); mv.visitLabel(end); mv.visitInsn(ARETURN); mv.visitMaxs(0, 0); @@ -232,7 +233,8 @@ void fun2_() throws Exception { "(Lyeti/lang/Fun2;Ljava/lang/Object;)V", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn(INVOKESPECIAL, "yeti/lang/Fun", "", "()V"); + mv.visitMethodInsn(INVOKESPECIAL, "yeti/lang/Fun", + "", "()V", false); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, 1); mv.visitFieldInsn(PUTFIELD, "yeti/lang/Fun2_", @@ -259,7 +261,7 @@ void fun2_() throws Exception { mv.visitInsn(ACONST_NULL); mv.visitVarInsn(ASTORE, 1); mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/Fun2", "apply", - "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"); + "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", false); mv.visitInsn(ARETURN); mv.visitMaxs(0, 0); mv.visitEnd(); @@ -278,7 +280,8 @@ void compose() throws Exception { "(Ljava/lang/Object;Ljava/lang/Object;)V", null, null); mv.visitCode(); mv.visitVarInsn(ALOAD, 0); - mv.visitMethodInsn(INVOKESPECIAL, "yeti/lang/Fun", "", "()V"); + mv.visitMethodInsn(INVOKESPECIAL, "yeti/lang/Fun", + "", "()V", false); mv.visitVarInsn(ALOAD, 0); mv.visitVarInsn(ALOAD, 1); mv.visitTypeInsn(CHECKCAST, "yeti/lang/Fun"); @@ -306,9 +309,9 @@ void compose() throws Exception { mv.visitInsn(ACONST_NULL); mv.visitVarInsn(ASTORE, 1); mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/Fun", "apply", - "(Ljava/lang/Object;)Ljava/lang/Object;"); + "(Ljava/lang/Object;)Ljava/lang/Object;", false); mv.visitMethodInsn(INVOKEVIRTUAL, "yeti/lang/Fun", "apply", - "(Ljava/lang/Object;)Ljava/lang/Object;"); + "(Ljava/lang/Object;)Ljava/lang/Object;", false); mv.visitInsn(ARETURN); mv.visitMaxs(0, 0); mv.visitEnd();