src/share/classes/sun/tools/javap/StackMapData.java

Wed, 02 Jul 2008 12:56:02 -0700

author
xdono
date
Wed, 02 Jul 2008 12:56:02 -0700
changeset 54
eaf608c64fec
parent 1
9a66ca7c79fa
permissions
-rw-r--r--

6719955: Update copyright year
Summary: Update copyright year for files that have been modified in 2008
Reviewed-by: ohair, tbell

     1 /*
     2  * Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Sun designates this
     8  * particular file as subject to the "Classpath" exception as provided
     9  * by Sun in the LICENSE file that accompanied this code.
    10  *
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    14  * version 2 for more details (a copy is included in the LICENSE file that
    15  * accompanied this code).
    16  *
    17  * You should have received a copy of the GNU General Public License version
    18  * 2 along with this work; if not, write to the Free Software Foundation,
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    20  *
    21  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
    22  * CA 95054 USA or visit www.sun.com if you need additional information or
    23  * have any questions.
    24  */
    27 package sun.tools.javap;
    29 import java.util.*;
    30 import java.io.*;
    32 import static sun.tools.javap.RuntimeConstants.*;
    34 /* represents one entry of StackMap attribute
    35  */
    36 class StackMapData {
    37     final int offset;
    38     final int[] locals;
    39     final int[] stack;
    41     StackMapData(int offset, int[] locals, int[] stack) {
    42         this.offset = offset;
    43         this.locals = locals;
    44         this.stack = stack;
    45     }
    47     StackMapData(DataInputStream in, MethodData method) throws IOException {
    48         offset = in.readUnsignedShort();
    49         int local_size = in.readUnsignedShort();
    50         locals = readTypeArray(in, local_size, method);
    51         int stack_size = in.readUnsignedShort();
    52         stack = readTypeArray(in, stack_size, method);
    53     }
    55     static final int[] readTypeArray(DataInputStream in, int length, MethodData method) throws IOException {
    56         int[] types = new int[length];
    57         for (int i=0; i<length; i++) {
    58             types[i] = readType(in, method);
    59         }
    60         return types;
    61     }
    63     static final int readType(DataInputStream in, MethodData method) throws IOException {
    64         int type = in.readUnsignedByte();
    65         if (type == ITEM_Object || type == ITEM_NewObject) {
    66             type = type | (in.readUnsignedShort()<<8);
    67         }
    68         return type;
    69     }
    71     void print(JavapPrinter p) {
    72         p.out.println("   " + offset + ":");
    73         p.printMap("    locals = [", locals);
    74         p.printMap("    stack = [", stack);
    75     }
    76 }

mercurial