Mercurial > hg > Members > kono > jpf-core
diff src/main/gov/nasa/jpf/jvm/JVMByteCodePrinter.java @ 0:61d41facf527
initial v8 import (history reset)
author | Peter Mehlitz <Peter.C.Mehlitz@nasa.gov> |
---|---|
date | Fri, 23 Jan 2015 10:14:01 -0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/gov/nasa/jpf/jvm/JVMByteCodePrinter.java Fri Jan 23 10:14:01 2015 -0800 @@ -0,0 +1,1096 @@ +/* + * Copyright (C) 2014, United States Government, as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All rights reserved. + * + * The Java Pathfinder core (jpf-core) platform is licensed under the + * Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package gov.nasa.jpf.jvm; + +import java.io.PrintWriter; + +/** + * utility class that prints out bytecode in readable form + */ +public class JVMByteCodePrinter implements JVMByteCodeReader { + + PrintWriter pw; + ClassFile cf; // need this to get the constpool entries + + String prefix; + + public JVMByteCodePrinter (PrintWriter pw, ClassFile cf, String prefix){ + this.pw = pw; + this.cf = cf; + this.prefix = prefix; + } + + @Override + public void aconst_null() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aconst_null"); + } + + @Override + public void aload(int localVarIndex) { + pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "aload", localVarIndex); + } + + @Override + public void aload_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aload_0"); + } + + @Override + public void aload_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aload_1"); + } + + @Override + public void aload_2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aload_2"); + } + + @Override + public void aload_3() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aload_3"); + } + + @Override + public void aaload() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aaload"); + } + + @Override + public void astore(int localVarIndex) { + pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "astore", localVarIndex); + } + + @Override + public void astore_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "astore_0"); + } + + @Override + public void astore_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "astore_1"); + } + + @Override + public void astore_2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "astore_2"); + } + + @Override + public void astore_3() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "astore_3"); + } + + @Override + public void aastore() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aastore"); + } + + @Override + public void areturn() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "areturn"); + } + + @Override + public void anewarray(int cpClassIndex) { + pw.printf("%s%3d: %s @%d(\"%s\")\n", prefix, cf.getPc(), "anewarray", cpClassIndex, cf.classNameAt(cpClassIndex)); + } + + @Override + public void arraylength() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "arraylength"); + } + + @Override + public void athrow() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "athrow"); + } + + @Override + public void baload() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "baload"); + } + + @Override + public void bastore() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "bastore"); + } + + @Override + public void bipush(int b) { + pw.printf("%s%3d: %s %d\n", prefix, cf.getPc(), "bipush", b); + } + + @Override + public void caload() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "caload"); + } + + @Override + public void castore() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "castore"); + } + + @Override + public void checkcast(int cpClassIndex) { + pw.printf("%s%3d: %s @%d(\"%s\")\n", prefix, cf.getPc(), "checkcast", cpClassIndex, cf.classNameAt(cpClassIndex)); + } + + @Override + public void d2f() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "d2f"); + } + + @Override + public void d2i() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "d2i"); + } + + @Override + public void d2l() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "d2l"); + } + + @Override + public void dadd() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dadd"); + } + + @Override + public void daload() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "daload"); + } + + @Override + public void dastore() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dastore"); + } + + @Override + public void dcmpg() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dcmpg"); + } + + @Override + public void dcmpl() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dcmpl"); + } + + @Override + public void dconst_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dconst_0"); + } + + @Override + public void dconst_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dcont_1"); + } + + @Override + public void ddiv() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ddiv"); + } + + @Override + public void dload(int localVarIndex) { + pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "dload", localVarIndex); + } + + @Override + public void dload_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dload_0"); + } + + @Override + public void dload_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dload_1"); + } + + @Override + public void dload_2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dload_2"); + } + + @Override + public void dload_3() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dload_3"); + } + + @Override + public void dmul() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dmul"); + } + + @Override + public void dneg() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dneg"); + } + + @Override + public void drem() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "drem"); + } + + @Override + public void dreturn() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dreturn"); + } + + @Override + public void dstore(int localVarIndex) { + pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "dstore", localVarIndex); + } + + @Override + public void dstore_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dstore_0"); + } + + @Override + public void dstore_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dstore_1"); + } + + @Override + public void dstore_2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dstore_2"); + } + + @Override + public void dstore_3() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dstore_3"); + } + + @Override + public void dsub() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dsub"); + } + + @Override + public void dup() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dup"); + } + + @Override + public void dup_x1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dup_x1"); + } + + @Override + public void dup_x2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dup_x2"); + } + + @Override + public void dup2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dup2"); + } + + @Override + public void dup2_x1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dup2_x1"); + } + + @Override + public void dup2_x2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dup2_x2"); + } + + @Override + public void f2d() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "f2d"); + } + + @Override + public void f2i() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "f2i"); + } + + @Override + public void f2l() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "f2l"); + } + + @Override + public void fadd() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fadd"); + } + + @Override + public void faload() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "faload"); + } + + @Override + public void fastore() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fastore"); + } + + @Override + public void fcmpg() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fcmpg"); + } + + @Override + public void fcmpl() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fcmpl"); + } + + @Override + public void fconst_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fconst_0"); + } + + @Override + public void fconst_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fconst_1"); + } + + @Override + public void fconst_2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fconst_2"); + } + + @Override + public void fdiv() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fdiv"); + } + + @Override + public void fload(int localVarIndex) { + pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "fload", localVarIndex); + } + + @Override + public void fload_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fload_0"); + } + + @Override + public void fload_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fload_1"); + } + + @Override + public void fload_2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fload_2"); + } + + @Override + public void fload_3() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fload_3"); + } + + @Override + public void fmul() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fmul"); + } + + @Override + public void fneg() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fneg"); + } + + @Override + public void frem() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "frem"); + } + + @Override + public void freturn() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "freturn"); + } + + @Override + public void fstore(int localVarIndex) { + pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "fstore", localVarIndex); + } + + @Override + public void fstore_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fstore_0"); + } + + @Override + public void fstore_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fstore_1"); + } + + @Override + public void fstore_2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fstore_2"); + } + + @Override + public void fstore_3() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fstore_3"); + } + + @Override + public void fsub() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fsub"); + } + + @Override + public void getfield(int cpFieldRefIndex) { + pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "getfield", cpFieldRefIndex, + cf.fieldClassNameAt(cpFieldRefIndex), + cf.fieldNameAt(cpFieldRefIndex), + cf.fieldDescriptorAt(cpFieldRefIndex)); + } + + @Override + public void getstatic(int cpFieldRefIndex) { + pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "getstatic", cpFieldRefIndex, + cf.fieldClassNameAt(cpFieldRefIndex), + cf.fieldNameAt(cpFieldRefIndex), + cf.fieldDescriptorAt(cpFieldRefIndex)); + } + + @Override + public void goto_(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "goto", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void goto_w(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "goto_w", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void i2b() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "i2b"); + } + + @Override + public void i2c() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "i2c"); + } + + @Override + public void i2d() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "i2d"); + } + + @Override + public void i2f() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "i2f"); + } + + @Override + public void i2l() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "i2l"); + } + + @Override + public void i2s() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "i2s"); + } + + @Override + public void iadd() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iadd"); + } + + @Override + public void iaload() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iaload"); + } + + @Override + public void iand() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iand"); + } + + @Override + public void iastore() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iastore"); + } + + @Override + public void iconst_m1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_m1"); + } + + @Override + public void iconst_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_0"); + } + + @Override + public void iconst_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_1"); + } + + @Override + public void iconst_2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_2"); + } + + @Override + public void iconst_3() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_3"); + } + + @Override + public void iconst_4() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_4"); + } + + @Override + public void iconst_5() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_5"); + } + + @Override + public void idiv() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "idiv"); + } + + @Override + public void if_acmpeq(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_acmpeq", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void if_acmpne(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_acmpne", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void if_icmpeq(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_icmpeq", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void if_icmpne(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_icmpne", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void if_icmplt(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_icmplt", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void if_icmpge(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_icmpge", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void if_icmpgt(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_icmpgt", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void if_icmple(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_icmple", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void ifeq(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifeq", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void ifne(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifne", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void iflt(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "iflt", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void ifge(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifge", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void ifgt(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifgt", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void ifle(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifle", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void ifnonnull(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifnonnull", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void ifnull(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifnull", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void iinc(int localVarIndex, int incConstant) { + pw.printf("%s%3d: %s [%d] %+d\n", prefix, cf.getPc(), "iinc", localVarIndex, incConstant); + } + + @Override + public void iload(int localVarIndex) { + pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "iload", localVarIndex); + } + + @Override + public void iload_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iload_0"); + } + + @Override + public void iload_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iload_1"); + } + + @Override + public void iload_2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iload_2"); + } + + @Override + public void iload_3() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iload_3"); + } + + @Override + public void imul() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "imul"); + } + + @Override + public void ineg() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ineg"); + } + + @Override + public void instanceof_(int cpClassIndex) { + pw.printf("%s%3d: %s @%d(\"%s\")\n", prefix, cf.getPc(), "instanceof", cpClassIndex, cf.classNameAt(cpClassIndex)); + } + + @Override + public void invokeinterface(int cpInterfaceMethodRefIndex, int count, int zero) { + pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\") %d\n", prefix, cf.getPc(), "invokeinterface", cpInterfaceMethodRefIndex, + cf.methodClassNameAt(cpInterfaceMethodRefIndex), + cf.methodNameAt(cpInterfaceMethodRefIndex), + cf.methodDescriptorAt(cpInterfaceMethodRefIndex), + count); + } + + @Override + public void invokespecial(int cpMethodRefIndex) { + pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "invokespecial", cpMethodRefIndex, + cf.methodClassNameAt(cpMethodRefIndex), + cf.methodNameAt(cpMethodRefIndex), + cf.methodDescriptorAt(cpMethodRefIndex)); + } + + @Override + public void invokestatic(int cpMethodRefIndex) { + pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "invokestatic", cpMethodRefIndex, + cf.methodClassNameAt(cpMethodRefIndex), + cf.methodNameAt(cpMethodRefIndex), + cf.methodDescriptorAt(cpMethodRefIndex)); + } + + @Override + public void invokevirtual(int cpMethodRefIndex) { + pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "invokevirtual", cpMethodRefIndex, + cf.methodClassNameAt(cpMethodRefIndex), + cf.methodNameAt(cpMethodRefIndex), + cf.methodDescriptorAt(cpMethodRefIndex)); + } + + @Override + public void invokedynamic (int cpInvokeDynamicIndex){ + pw.printf("%s%3d: %s @%d\n", prefix, cf.getPc(), "invokedynamic", cpInvokeDynamicIndex); + } + + @Override + public void ior() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ior"); + } + + @Override + public void irem() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "irem"); + } + + @Override + public void ireturn() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ireturn"); + } + + @Override + public void ishl() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ishl"); + } + + @Override + public void ishr() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ishr"); + } + + @Override + public void istore(int localVarIndex) { + pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "istore", localVarIndex); + } + + @Override + public void istore_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "istore_0"); + } + + @Override + public void istore_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "istore_1"); + } + + @Override + public void istore_2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "istore_2"); + } + + @Override + public void istore_3() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "istore_3"); + } + + @Override + public void isub() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "isub"); + } + + @Override + public void iushr() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iushr"); + } + + @Override + public void ixor() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ixor"); + } + + @Override + public void jsr(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "jsr", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void jsr_w(int pcOffset) { + pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "jsr_w", pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void l2d() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "l2d"); + } + + @Override + public void l2f() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "l2f"); + } + + @Override + public void l2i() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "l2i"); + } + + @Override + public void ladd() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ladd"); + } + + @Override + public void laload() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "laload"); + } + + @Override + public void land() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "land"); + } + + @Override + public void lastore() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lastore"); + } + + @Override + public void lcmp() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lcmp"); + } + + @Override + public void lconst_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lconst_0"); + } + + @Override + public void lconst_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lconst_1"); + } + + @Override + public void ldc_(int cpIntOrFloatOrStringIndex) { + pw.printf("%s%3d: %s @%d(%s)\n", prefix, cf.getPc(), "ldc", cpIntOrFloatOrStringIndex, + cf.getCpValue(cpIntOrFloatOrStringIndex)); + } + + @Override + public void ldc_w_(int cpIntOrFloatOrStringIndex) { + pw.printf("%s%3d: %s @%d(%s)\n", prefix, cf.getPc(), "ldc_w", cpIntOrFloatOrStringIndex, + cf.getCpValue(cpIntOrFloatOrStringIndex)); + } + + @Override + public void ldc2_w(int cpLongOrDoubleIndex) { + pw.printf("%s%3d: %s @%d(%s)\n", prefix, cf.getPc(), "ldc2_w", cpLongOrDoubleIndex, + cf.getCpValue(cpLongOrDoubleIndex)); + } + + @Override + public void ldiv() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ldiv"); + } + + @Override + public void lload(int localVarIndex) { + pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "lload", localVarIndex); + } + + @Override + public void lload_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lload_0"); + } + + @Override + public void lload_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lload_1"); + } + + @Override + public void lload_2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lload_2"); + } + + @Override + public void lload_3() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lload_3"); + } + + @Override + public void lmul() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lmul"); + } + + @Override + public void lneg() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lneg"); + } + + @Override + public void lookupswitch(int defaultPcOffset, int nEntries) { + pw.printf("%s%3d: %s default:%+d\n", prefix, cf.getPc(), "lookupswitch", defaultPcOffset); + cf.parseLookupSwitchEntries(this, nEntries); + } + @Override + public void lookupswitchEntry(int index, int match, int pcOffset){ + pw.printf("%s %d : %+d (%d)\n", prefix, match, pcOffset, (cf.getPc() + pcOffset)); + } + + + @Override + public void lor() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lor"); + } + + @Override + public void lrem() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lrem"); + } + + @Override + public void lreturn() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lreturn"); + } + + @Override + public void lshl() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lshl"); + } + + @Override + public void lshr() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lshr"); + } + + @Override + public void lstore(int localVarIndex) { + pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "lstore", localVarIndex); + } + + @Override + public void lstore_0() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lstore_0"); + } + + @Override + public void lstore_1() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lstore_1"); + } + + @Override + public void lstore_2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lstore_2"); + } + + @Override + public void lstore_3() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lstore_3"); + } + + @Override + public void lsub() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lsub"); + } + + @Override + public void lushr() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lushr"); + } + + @Override + public void lxor() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lxor"); + } + + @Override + public void monitorenter() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "monitorenter"); + } + + @Override + public void monitorexit() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "monitorexit"); + } + + @Override + public void multianewarray(int cpClassIndex, int dimensions) { + pw.printf("%s%3d: %s @%d(\"%s\") dim: %d\n", prefix, cf.getPc(), "multianewarray", + cpClassIndex, cf.classNameAt(cpClassIndex), dimensions); + } + + @Override + public void new_(int cpClassIndex) { + pw.printf("%s%3d: %s @%d(\"%s\")\n", prefix, cf.getPc(), "new", + cpClassIndex, cf.classNameAt(cpClassIndex)); + } + + @Override + public void newarray(int typeCode) { + pw.printf("%s%3d: %s %s[]\n", prefix, cf.getPc(), "newarray", cf.getTypeName(typeCode)); + } + + @Override + public void nop() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "nop"); + } + + @Override + public void pop() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "pop"); + } + + @Override + public void pop2() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "pop2"); + } + + @Override + public void putfield(int cpFieldRefIndex) { + pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "putfield", cpFieldRefIndex, + cf.fieldClassNameAt(cpFieldRefIndex), + cf.fieldNameAt(cpFieldRefIndex), + cf.fieldDescriptorAt(cpFieldRefIndex)); + } + + @Override + public void putstatic(int cpFieldRefIndex) { + pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "putstatic", cpFieldRefIndex, + cf.fieldClassNameAt(cpFieldRefIndex), + cf.fieldNameAt(cpFieldRefIndex), + cf.fieldDescriptorAt(cpFieldRefIndex)); + } + + @Override + public void ret(int localVarIndex) { + pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "ret", localVarIndex); + } + + @Override + public void return_() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "return"); + } + + @Override + public void saload() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "saload"); + } + + @Override + public void sastore() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "sastore"); + } + + @Override + public void sipush(int val) { + pw.printf("%s%3d: %s %d\n", prefix, cf.getPc(), "sipush", val); + } + + @Override + public void swap() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "swap"); + } + + @Override + public void tableswitch(int defaultPcOffset, int low, int high) { + pw.printf("%s%3d: %s [%d..%d] default: %+d\n", prefix, cf.getPc(), "tableswitch", low, high, defaultPcOffset); + cf.parseTableSwitchEntries(this, low, high); + } + @Override + public void tableswitchEntry(int val, int pcOffset){ + pw.printf("%s %d: %+d (%d)\n", prefix, val, pcOffset, (cf.getPc() + pcOffset)); + } + + @Override + public void wide() { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "wide"); + } + + @Override + public void unknown(int bytecode) { + pw.printf("%s%3d: %s\n", prefix, cf.getPc(), ""); + } + + +}