1 /* 2 * Copyright (c) 2001, Oracle and/or its affiliates. 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. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 package sun.jvm.hotspot.runtime; 26 27 import sun.jvm.hotspot.oops.*; 28 29 public abstract class SignatureInfo extends SignatureIterator { 30 protected boolean hasIterated; // need this because iterate cannot be called in constructor (set is virtual!) 31 protected int size; 32 protected int type; // BasicType 33 lazyIterate()34 protected void lazyIterate() { 35 if (!hasIterated) { 36 iterate(); 37 hasIterated = true; 38 } 39 } 40 set(int size, int type)41 protected abstract void set(int size, int /*BasicType*/ type); 42 doBool()43 public void doBool() { set(BasicTypeSize.getTBooleanSize(), BasicType.getTBoolean()); } doChar()44 public void doChar() { set(BasicTypeSize.getTCharSize(), BasicType.getTChar()); } doFloat()45 public void doFloat() { set(BasicTypeSize.getTFloatSize(), BasicType.getTFloat()); } doDouble()46 public void doDouble() { set(BasicTypeSize.getTDoubleSize(), BasicType.getTDouble()); } doByte()47 public void doByte() { set(BasicTypeSize.getTByteSize(), BasicType.getTByte()); } doShort()48 public void doShort() { set(BasicTypeSize.getTShortSize(), BasicType.getTShort()); } doInt()49 public void doInt() { set(BasicTypeSize.getTIntSize(), BasicType.getTInt()); } doLong()50 public void doLong() { set(BasicTypeSize.getTLongSize(), BasicType.getTLong()); } doVoid()51 public void doVoid() { set(BasicTypeSize.getTVoidSize(), BasicType.getTVoid()); } doObject(int begin, int end)52 public void doObject(int begin, int end) { set(BasicTypeSize.getTObjectSize(), BasicType.getTObject()); } doArray(int begin, int end)53 public void doArray(int begin, int end) { set(BasicTypeSize.getTArraySize(), BasicType.getTArray()); } 54 SignatureInfo(Symbol signature)55 public SignatureInfo(Symbol signature) { 56 super(signature); 57 58 type = BasicType.getTIllegal(); 59 } 60 size()61 public int size() { lazyIterate(); return size; } type()62 public int type() { lazyIterate(); return type; } 63 } 64