2 * Copyright (C) 2014, United States Government, as represented by the
3 * Administrator of the National Aeronautics and Space Administration.
6 * The Java Pathfinder core (jpf-core) platform is licensed under the
7 * Apache License, Version 2.0 (the "License"); you may not use this file except
8 * in compliance with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0.
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 package gov.nasa.jpf.jvm;
21 import java.io.PrintWriter;
24 * utility class that prints out bytecode in readable form
26 public class JVMByteCodePrinter implements JVMByteCodeReader {
29 ClassFile cf; // need this to get the constpool entries
33 public JVMByteCodePrinter (PrintWriter pw, ClassFile cf, String prefix){
40 public void aconst_null() {
41 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aconst_null");
45 public void aload(int localVarIndex) {
46 pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "aload", localVarIndex);
50 public void aload_0() {
51 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aload_0");
55 public void aload_1() {
56 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aload_1");
60 public void aload_2() {
61 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aload_2");
65 public void aload_3() {
66 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aload_3");
70 public void aaload() {
71 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aaload");
75 public void astore(int localVarIndex) {
76 pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "astore", localVarIndex);
80 public void astore_0() {
81 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "astore_0");
85 public void astore_1() {
86 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "astore_1");
90 public void astore_2() {
91 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "astore_2");
95 public void astore_3() {
96 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "astore_3");
100 public void aastore() {
101 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "aastore");
105 public void areturn() {
106 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "areturn");
110 public void anewarray(int cpClassIndex) {
111 pw.printf("%s%3d: %s @%d(\"%s\")\n", prefix, cf.getPc(), "anewarray", cpClassIndex, cf.classNameAt(cpClassIndex));
115 public void arraylength() {
116 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "arraylength");
120 public void athrow() {
121 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "athrow");
125 public void baload() {
126 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "baload");
130 public void bastore() {
131 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "bastore");
135 public void bipush(int b) {
136 pw.printf("%s%3d: %s %d\n", prefix, cf.getPc(), "bipush", b);
140 public void caload() {
141 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "caload");
145 public void castore() {
146 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "castore");
150 public void checkcast(int cpClassIndex) {
151 pw.printf("%s%3d: %s @%d(\"%s\")\n", prefix, cf.getPc(), "checkcast", cpClassIndex, cf.classNameAt(cpClassIndex));
156 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "d2f");
161 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "d2i");
166 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "d2l");
171 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dadd");
175 public void daload() {
176 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "daload");
180 public void dastore() {
181 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dastore");
185 public void dcmpg() {
186 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dcmpg");
190 public void dcmpl() {
191 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dcmpl");
195 public void dconst_0() {
196 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dconst_0");
200 public void dconst_1() {
201 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dcont_1");
206 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ddiv");
210 public void dload(int localVarIndex) {
211 pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "dload", localVarIndex);
215 public void dload_0() {
216 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dload_0");
220 public void dload_1() {
221 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dload_1");
225 public void dload_2() {
226 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dload_2");
230 public void dload_3() {
231 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dload_3");
236 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dmul");
241 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dneg");
246 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "drem");
250 public void dreturn() {
251 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dreturn");
255 public void dstore(int localVarIndex) {
256 pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "dstore", localVarIndex);
260 public void dstore_0() {
261 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dstore_0");
265 public void dstore_1() {
266 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dstore_1");
270 public void dstore_2() {
271 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dstore_2");
275 public void dstore_3() {
276 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dstore_3");
281 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dsub");
286 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dup");
290 public void dup_x1() {
291 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dup_x1");
295 public void dup_x2() {
296 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dup_x2");
301 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dup2");
305 public void dup2_x1() {
306 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dup2_x1");
310 public void dup2_x2() {
311 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "dup2_x2");
316 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "f2d");
321 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "f2i");
326 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "f2l");
331 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fadd");
335 public void faload() {
336 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "faload");
340 public void fastore() {
341 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fastore");
345 public void fcmpg() {
346 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fcmpg");
350 public void fcmpl() {
351 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fcmpl");
355 public void fconst_0() {
356 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fconst_0");
360 public void fconst_1() {
361 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fconst_1");
365 public void fconst_2() {
366 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fconst_2");
371 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fdiv");
375 public void fload(int localVarIndex) {
376 pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "fload", localVarIndex);
380 public void fload_0() {
381 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fload_0");
385 public void fload_1() {
386 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fload_1");
390 public void fload_2() {
391 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fload_2");
395 public void fload_3() {
396 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fload_3");
401 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fmul");
406 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fneg");
411 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "frem");
415 public void freturn() {
416 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "freturn");
420 public void fstore(int localVarIndex) {
421 pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "fstore", localVarIndex);
425 public void fstore_0() {
426 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fstore_0");
430 public void fstore_1() {
431 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fstore_1");
435 public void fstore_2() {
436 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fstore_2");
440 public void fstore_3() {
441 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fstore_3");
446 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "fsub");
450 public void getfield(int cpFieldRefIndex) {
451 pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "getfield", cpFieldRefIndex,
452 cf.fieldClassNameAt(cpFieldRefIndex),
453 cf.fieldNameAt(cpFieldRefIndex),
454 cf.fieldDescriptorAt(cpFieldRefIndex));
458 public void getstatic(int cpFieldRefIndex) {
459 pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "getstatic", cpFieldRefIndex,
460 cf.fieldClassNameAt(cpFieldRefIndex),
461 cf.fieldNameAt(cpFieldRefIndex),
462 cf.fieldDescriptorAt(cpFieldRefIndex));
466 public void goto_(int pcOffset) {
467 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "goto", pcOffset, (cf.getPc() + pcOffset));
471 public void goto_w(int pcOffset) {
472 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "goto_w", pcOffset, (cf.getPc() + pcOffset));
477 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "i2b");
482 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "i2c");
487 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "i2d");
492 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "i2f");
497 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "i2l");
502 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "i2s");
507 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iadd");
511 public void iaload() {
512 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iaload");
517 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iand");
521 public void iastore() {
522 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iastore");
526 public void iconst_m1() {
527 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_m1");
531 public void iconst_0() {
532 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_0");
536 public void iconst_1() {
537 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_1");
541 public void iconst_2() {
542 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_2");
546 public void iconst_3() {
547 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_3");
551 public void iconst_4() {
552 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_4");
556 public void iconst_5() {
557 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iconst_5");
562 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "idiv");
566 public void if_acmpeq(int pcOffset) {
567 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_acmpeq", pcOffset, (cf.getPc() + pcOffset));
571 public void if_acmpne(int pcOffset) {
572 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_acmpne", pcOffset, (cf.getPc() + pcOffset));
576 public void if_icmpeq(int pcOffset) {
577 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_icmpeq", pcOffset, (cf.getPc() + pcOffset));
581 public void if_icmpne(int pcOffset) {
582 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_icmpne", pcOffset, (cf.getPc() + pcOffset));
586 public void if_icmplt(int pcOffset) {
587 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_icmplt", pcOffset, (cf.getPc() + pcOffset));
591 public void if_icmpge(int pcOffset) {
592 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_icmpge", pcOffset, (cf.getPc() + pcOffset));
596 public void if_icmpgt(int pcOffset) {
597 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_icmpgt", pcOffset, (cf.getPc() + pcOffset));
601 public void if_icmple(int pcOffset) {
602 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "if_icmple", pcOffset, (cf.getPc() + pcOffset));
606 public void ifeq(int pcOffset) {
607 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifeq", pcOffset, (cf.getPc() + pcOffset));
611 public void ifne(int pcOffset) {
612 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifne", pcOffset, (cf.getPc() + pcOffset));
616 public void iflt(int pcOffset) {
617 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "iflt", pcOffset, (cf.getPc() + pcOffset));
621 public void ifge(int pcOffset) {
622 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifge", pcOffset, (cf.getPc() + pcOffset));
626 public void ifgt(int pcOffset) {
627 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifgt", pcOffset, (cf.getPc() + pcOffset));
631 public void ifle(int pcOffset) {
632 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifle", pcOffset, (cf.getPc() + pcOffset));
636 public void ifnonnull(int pcOffset) {
637 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifnonnull", pcOffset, (cf.getPc() + pcOffset));
641 public void ifnull(int pcOffset) {
642 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "ifnull", pcOffset, (cf.getPc() + pcOffset));
646 public void iinc(int localVarIndex, int incConstant) {
647 pw.printf("%s%3d: %s [%d] %+d\n", prefix, cf.getPc(), "iinc", localVarIndex, incConstant);
651 public void iload(int localVarIndex) {
652 pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "iload", localVarIndex);
656 public void iload_0() {
657 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iload_0");
661 public void iload_1() {
662 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iload_1");
666 public void iload_2() {
667 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iload_2");
671 public void iload_3() {
672 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iload_3");
677 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "imul");
682 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ineg");
686 public void instanceof_(int cpClassIndex) {
687 pw.printf("%s%3d: %s @%d(\"%s\")\n", prefix, cf.getPc(), "instanceof", cpClassIndex, cf.classNameAt(cpClassIndex));
691 public void invokeinterface(int cpInterfaceMethodRefIndex, int count, int zero) {
692 pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\") %d\n", prefix, cf.getPc(), "invokeinterface", cpInterfaceMethodRefIndex,
693 cf.methodClassNameAt(cpInterfaceMethodRefIndex),
694 cf.methodNameAt(cpInterfaceMethodRefIndex),
695 cf.methodDescriptorAt(cpInterfaceMethodRefIndex),
700 public void invokespecial(int cpMethodRefIndex) {
701 pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "invokespecial", cpMethodRefIndex,
702 cf.methodClassNameAt(cpMethodRefIndex),
703 cf.methodNameAt(cpMethodRefIndex),
704 cf.methodDescriptorAt(cpMethodRefIndex));
708 public void invokestatic(int cpMethodRefIndex) {
709 pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "invokestatic", cpMethodRefIndex,
710 cf.methodClassNameAt(cpMethodRefIndex),
711 cf.methodNameAt(cpMethodRefIndex),
712 cf.methodDescriptorAt(cpMethodRefIndex));
716 public void invokevirtual(int cpMethodRefIndex) {
717 pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "invokevirtual", cpMethodRefIndex,
718 cf.methodClassNameAt(cpMethodRefIndex),
719 cf.methodNameAt(cpMethodRefIndex),
720 cf.methodDescriptorAt(cpMethodRefIndex));
724 public void invokedynamic (int cpInvokeDynamicIndex){
725 pw.printf("%s%3d: %s @%d\n", prefix, cf.getPc(), "invokedynamic", cpInvokeDynamicIndex);
730 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ior");
735 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "irem");
739 public void ireturn() {
740 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ireturn");
745 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ishl");
750 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ishr");
754 public void istore(int localVarIndex) {
755 pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "istore", localVarIndex);
759 public void istore_0() {
760 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "istore_0");
764 public void istore_1() {
765 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "istore_1");
769 public void istore_2() {
770 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "istore_2");
774 public void istore_3() {
775 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "istore_3");
780 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "isub");
784 public void iushr() {
785 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "iushr");
790 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ixor");
794 public void jsr(int pcOffset) {
795 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "jsr", pcOffset, (cf.getPc() + pcOffset));
799 public void jsr_w(int pcOffset) {
800 pw.printf("%s%3d: %s %+d (%d)\n", prefix, cf.getPc(), "jsr_w", pcOffset, (cf.getPc() + pcOffset));
805 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "l2d");
810 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "l2f");
815 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "l2i");
820 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ladd");
824 public void laload() {
825 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "laload");
830 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "land");
834 public void lastore() {
835 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lastore");
840 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lcmp");
844 public void lconst_0() {
845 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lconst_0");
849 public void lconst_1() {
850 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lconst_1");
854 public void ldc_(int cpIntOrFloatOrStringIndex) {
855 pw.printf("%s%3d: %s @%d(%s)\n", prefix, cf.getPc(), "ldc", cpIntOrFloatOrStringIndex,
856 cf.getCpValue(cpIntOrFloatOrStringIndex));
860 public void ldc_w_(int cpIntOrFloatOrStringIndex) {
861 pw.printf("%s%3d: %s @%d(%s)\n", prefix, cf.getPc(), "ldc_w", cpIntOrFloatOrStringIndex,
862 cf.getCpValue(cpIntOrFloatOrStringIndex));
866 public void ldc2_w(int cpLongOrDoubleIndex) {
867 pw.printf("%s%3d: %s @%d(%s)\n", prefix, cf.getPc(), "ldc2_w", cpLongOrDoubleIndex,
868 cf.getCpValue(cpLongOrDoubleIndex));
873 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "ldiv");
877 public void lload(int localVarIndex) {
878 pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "lload", localVarIndex);
882 public void lload_0() {
883 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lload_0");
887 public void lload_1() {
888 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lload_1");
892 public void lload_2() {
893 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lload_2");
897 public void lload_3() {
898 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lload_3");
903 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lmul");
908 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lneg");
912 public void lookupswitch(int defaultPcOffset, int nEntries) {
913 pw.printf("%s%3d: %s default:%+d\n", prefix, cf.getPc(), "lookupswitch", defaultPcOffset);
914 cf.parseLookupSwitchEntries(this, nEntries);
917 public void lookupswitchEntry(int index, int match, int pcOffset){
918 pw.printf("%s %d : %+d (%d)\n", prefix, match, pcOffset, (cf.getPc() + pcOffset));
924 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lor");
929 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lrem");
933 public void lreturn() {
934 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lreturn");
939 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lshl");
944 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lshr");
948 public void lstore(int localVarIndex) {
949 pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "lstore", localVarIndex);
953 public void lstore_0() {
954 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lstore_0");
958 public void lstore_1() {
959 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lstore_1");
963 public void lstore_2() {
964 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lstore_2");
968 public void lstore_3() {
969 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lstore_3");
974 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lsub");
978 public void lushr() {
979 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lushr");
984 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "lxor");
988 public void monitorenter() {
989 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "monitorenter");
993 public void monitorexit() {
994 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "monitorexit");
998 public void multianewarray(int cpClassIndex, int dimensions) {
999 pw.printf("%s%3d: %s @%d(\"%s\") dim: %d\n", prefix, cf.getPc(), "multianewarray",
1000 cpClassIndex, cf.classNameAt(cpClassIndex), dimensions);
1004 public void new_(int cpClassIndex) {
1005 pw.printf("%s%3d: %s @%d(\"%s\")\n", prefix, cf.getPc(), "new",
1006 cpClassIndex, cf.classNameAt(cpClassIndex));
1010 public void newarray(int typeCode) {
1011 pw.printf("%s%3d: %s %s[]\n", prefix, cf.getPc(), "newarray", cf.getTypeName(typeCode));
1016 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "nop");
1021 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "pop");
1025 public void pop2() {
1026 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "pop2");
1030 public void putfield(int cpFieldRefIndex) {
1031 pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "putfield", cpFieldRefIndex,
1032 cf.fieldClassNameAt(cpFieldRefIndex),
1033 cf.fieldNameAt(cpFieldRefIndex),
1034 cf.fieldDescriptorAt(cpFieldRefIndex));
1038 public void putstatic(int cpFieldRefIndex) {
1039 pw.printf("%s%3d: %s @%d(\"%s\",\"%s\",\"%s\")\n", prefix, cf.getPc(), "putstatic", cpFieldRefIndex,
1040 cf.fieldClassNameAt(cpFieldRefIndex),
1041 cf.fieldNameAt(cpFieldRefIndex),
1042 cf.fieldDescriptorAt(cpFieldRefIndex));
1046 public void ret(int localVarIndex) {
1047 pw.printf("%s%3d: %s [%d]\n", prefix, cf.getPc(), "ret", localVarIndex);
1051 public void return_() {
1052 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "return");
1056 public void saload() {
1057 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "saload");
1061 public void sastore() {
1062 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "sastore");
1066 public void sipush(int val) {
1067 pw.printf("%s%3d: %s %d\n", prefix, cf.getPc(), "sipush", val);
1071 public void swap() {
1072 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "swap");
1076 public void tableswitch(int defaultPcOffset, int low, int high) {
1077 pw.printf("%s%3d: %s [%d..%d] default: %+d\n", prefix, cf.getPc(), "tableswitch", low, high, defaultPcOffset);
1078 cf.parseTableSwitchEntries(this, low, high);
1081 public void tableswitchEntry(int val, int pcOffset){
1082 pw.printf("%s %d: %+d (%d)\n", prefix, val, pcOffset, (cf.getPc() + pcOffset));
1086 public void wide() {
1087 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "wide");
1091 public void unknown(int bytecode) {
1092 pw.printf("%s%3d: %s\n", prefix, cf.getPc(), "");