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