langtools/src/share/classes/sun/tools/javap/StackMapTableData.java
changeset 2987 2e0ca9f4893d
parent 2986 5370c4ae4f6f
child 2988 094272984b53
--- a/langtools/src/share/classes/sun/tools/javap/StackMapTableData.java	Thu May 28 09:49:56 2009 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,168 +0,0 @@
-/*
- * Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-
-package sun.tools.javap;
-
-import java.util.*;
-import java.io.*;
-
-import static sun.tools.javap.RuntimeConstants.*;
-
-/* represents one entry of StackMapTable attribute
- */
-class StackMapTableData {
-    final int frameType;
-    int offsetDelta;
-
-    StackMapTableData(int frameType) {
-        this.frameType = frameType;
-    }
-
-    void print(JavapPrinter p) {
-        p.out.print("   frame_type = " + frameType);
-    }
-
-    static class SameFrame extends StackMapTableData {
-        SameFrame(int frameType, int offsetDelta) {
-            super(frameType);
-            this.offsetDelta = offsetDelta;
-        }
-        void print(JavapPrinter p) {
-            super.print(p);
-            if (frameType < SAME_FRAME_BOUND) {
-                p.out.println(" /* same */");
-            } else {
-                p.out.println(" /* same_frame_extended */");
-                p.out.println("     offset_delta = " + offsetDelta);
-            }
-        }
-    }
-
-    static class SameLocals1StackItem extends StackMapTableData {
-        final int[] stack;
-        SameLocals1StackItem(int frameType, int offsetDelta, int[] stack) {
-            super(frameType);
-            this.offsetDelta = offsetDelta;
-            this.stack = stack;
-        }
-        void print(JavapPrinter p) {
-            super.print(p);
-            if (frameType == SAME_LOCALS_1_STACK_ITEM_EXTENDED) {
-                p.out.println(" /* same_locals_1_stack_item_frame_extended */");
-                p.out.println("     offset_delta = " + offsetDelta);
-            } else {
-                p.out.println(" /* same_locals_1_stack_item */");
-            }
-            p.printMap("     stack = [", stack);
-        }
-    }
-
-    static class ChopFrame extends StackMapTableData {
-        ChopFrame(int frameType, int offsetDelta) {
-            super(frameType);
-            this.offsetDelta = offsetDelta;
-        }
-        void print(JavapPrinter p) {
-            super.print(p);
-            p.out.println(" /* chop */");
-            p.out.println("     offset_delta = " + offsetDelta);
-        }
-    }
-
-    static class AppendFrame extends StackMapTableData {
-        final int[] locals;
-        AppendFrame(int frameType, int offsetDelta, int[] locals) {
-            super(frameType);
-            this.offsetDelta = offsetDelta;
-            this.locals = locals;
-        }
-        void print(JavapPrinter p) {
-            super.print(p);
-            p.out.println(" /* append */");
-            p.out.println("     offset_delta = " + offsetDelta);
-            p.printMap("     locals = [", locals);
-        }
-    }
-
-    static class FullFrame extends StackMapTableData {
-        final int[] locals;
-        final int[] stack;
-        FullFrame(int offsetDelta, int[] locals, int[] stack) {
-            super(FULL_FRAME);
-            this.offsetDelta = offsetDelta;
-            this.locals = locals;
-            this.stack = stack;
-        }
-        void print(JavapPrinter p) {
-            super.print(p);
-            p.out.println(" /* full_frame */");
-            p.out.println("     offset_delta = " + offsetDelta);
-            p.printMap("     locals = [", locals);
-            p.printMap("     stack = [", stack);
-        }
-    }
-
-    static StackMapTableData getInstance(DataInputStream in, MethodData method)
-                  throws IOException {
-        int frameType = in.readUnsignedByte();
-
-        if (frameType < SAME_FRAME_BOUND) {
-            // same_frame
-            return new SameFrame(frameType, frameType);
-        } else if (SAME_FRAME_BOUND <= frameType && frameType < SAME_LOCALS_1_STACK_ITEM_BOUND) {
-            // same_locals_1_stack_item_frame
-            // read additional single stack element
-            return new SameLocals1StackItem(frameType,
-                                            (frameType - SAME_FRAME_BOUND),
-                                            StackMapData.readTypeArray(in, 1, method));
-        } else if (frameType == SAME_LOCALS_1_STACK_ITEM_EXTENDED) {
-            // same_locals_1_stack_item_extended
-            return new SameLocals1StackItem(frameType,
-                                            in.readUnsignedShort(),
-                                            StackMapData.readTypeArray(in, 1, method));
-        } else if (SAME_LOCALS_1_STACK_ITEM_EXTENDED < frameType  && frameType < SAME_FRAME_EXTENDED) {
-            // chop_frame or same_frame_extended
-            return new ChopFrame(frameType, in.readUnsignedShort());
-        } else if (frameType == SAME_FRAME_EXTENDED) {
-            // chop_frame or same_frame_extended
-            return new SameFrame(frameType, in.readUnsignedShort());
-        } else if (SAME_FRAME_EXTENDED < frameType  && frameType < FULL_FRAME) {
-            // append_frame
-            return new AppendFrame(frameType, in.readUnsignedShort(),
-                                   StackMapData.readTypeArray(in, frameType - SAME_FRAME_EXTENDED, method));
-        } else if (frameType == FULL_FRAME) {
-            // full_frame
-            int offsetDelta = in.readUnsignedShort();
-            int locals_size = in.readUnsignedShort();
-            int[] locals = StackMapData.readTypeArray(in, locals_size, method);
-            int stack_size = in.readUnsignedShort();
-            int[] stack = StackMapData.readTypeArray(in, stack_size, method);
-            return new FullFrame(offsetDelta, locals, stack);
-        } else {
-            throw new ClassFormatError("unrecognized frame_type in StackMapTable");
-        }
-    }
-}