diff --git a/jode/jode/jvm/Interpreter.j b/jode/jode/jvm/Interpreter.j index 77772d1..cfe096f 100644 --- a/jode/jode/jvm/Interpreter.j +++ b/jode/jode/jvm/Interpreter.j @@ -85,7 +85,7 @@ big_loop: ; ========= DEBUGGING OUTPUT =============================== getstatic jode/Decompiler/isDebugging Z ifeq skip_debugging - getstatic java/lang/System/err Ljava/io/PrintStream; + getstatic jode/Decompiler/err Ljava/io/PrintStream; dup aload 4 invokevirtual jode/bytecode/Instruction/getDescription()Ljava/lang/String; @@ -247,7 +247,6 @@ load_store_instr: ; ====== LOAD INSTRUCTIONS - pop ; opcode aload_3 ; stack iload 5 ; stacktop aaload @@ -258,6 +257,11 @@ load_store_instr: getfield jode/bytecode/Instruction/localSlot I aaload invokevirtual jode/jvm/Value/setValue(Ljode/jvm/Value;)V + + iconst_1 + iand ; opcode & 1 + ifne big_loop + iinc 5 1 goto big_loop array_load_instr: @@ -336,6 +340,7 @@ store_instr: goto big_loop array_store_instr: + istore 7 iinc 5 -2 aload_3 @@ -375,7 +380,6 @@ array_store_instr: ; index ; array - instanceof [Z ifne bool_array_store iload 6 @@ -717,8 +721,9 @@ second_op_done: first_op_single: ; opcode mask ; opcode - bipush 0x05A5 + sipush 0x05A5 iand + aload_3 iload 5 aaload @@ -1551,8 +1556,8 @@ invoke_instr: checkcast jode/bytecode/Reference dup invokevirtual jode/bytecode/Reference/getType()Ljava/lang/String; - invokestatic jode/Type/tType(Ljava/lang/String;)Ljode/Type; - checkcast jode/MethodType + invokestatic jode/type/Type/tType(Ljava/lang/String;)Ljode/type/Type; + checkcast jode/type/MethodType ; Stack: ; methodType ; ref @@ -1563,7 +1568,7 @@ invoke_instr: ; ref ; env ; methodType - invokevirtual jode/MethodType/getParameterTypes()[Ljode/Type; + invokevirtual jode/type/MethodType/getParameterTypes()[Ljode/type/Type; dup arraylength dup @@ -1594,7 +1599,7 @@ invoke_loop: ; ref ; env ; methodType - invokevirtual jode/Type/stackSize()I + invokevirtual jode/type/Type/stackSize()I ineg iload 5 iadd @@ -1683,8 +1688,8 @@ invoke_end: ; Stack: ; methodType - invokevirtual jode/MethodType/getReturnType()Ljode/Type; - invokevirtual jode/Type/stackSize()I + invokevirtual jode/type/MethodType/getReturnType()Ljode/type/Type; + invokevirtual jode/type/Type/stackSize()I dup ifeq popI_big_loop aload_3