blob: e09d6f5e1cef01485faaa322c5cd7c85339cd7b7 [file] [log] [blame]
/*
* Copyright (c) 2001, 2017, Oracle and/or its affiliates. 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.
*
* 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
package sun.jvm.hotspot.runtime;
import java.util.Observer;
import sun.jvm.hotspot.types.TypeDataBase;
/** Encapsulates the BasicTypeSize enum in globalDefinitions.hpp in
the VM. */
public class BasicTypeSize {
private static int tBooleanSize;
private static int tCharSize;
private static int tFloatSize;
private static int tDoubleSize;
private static int tByteSize;
private static int tShortSize;
private static int tIntSize;
private static int tLongSize;
private static int tObjectSize;
private static int tArraySize;
private static int tNarrowOopSize;
private static int tNarrowKlassSize;
private static int tVoidSize;
static {
VM.registerVMInitializedObserver(
(o, d) -> initialize(VM.getVM().getTypeDataBase()));
}
private static synchronized void initialize(TypeDataBase db) {
tBooleanSize = db.lookupIntConstant("T_BOOLEAN_size").intValue();
tCharSize = db.lookupIntConstant("T_INT_size").intValue();
tFloatSize = db.lookupIntConstant("T_FLOAT_size").intValue();
tDoubleSize = db.lookupIntConstant("T_DOUBLE_size").intValue();
tByteSize = db.lookupIntConstant("T_BYTE_size").intValue();
tShortSize = db.lookupIntConstant("T_SHORT_size").intValue();
tIntSize = db.lookupIntConstant("T_INT_size").intValue();
tLongSize = db.lookupIntConstant("T_LONG_size").intValue();
tObjectSize = db.lookupIntConstant("T_OBJECT_size").intValue();
tArraySize = db.lookupIntConstant("T_ARRAY_size").intValue();
tNarrowOopSize = db.lookupIntConstant("T_NARROWOOP_size").intValue();
tNarrowKlassSize = db.lookupIntConstant("T_NARROWKLASS_size").intValue();
tVoidSize = db.lookupIntConstant("T_VOID_size").intValue();
}
public static int getTBooleanSize() {
return tBooleanSize;
}
public static int getTCharSize() {
return tCharSize;
}
public static int getTFloatSize() {
return tFloatSize;
}
public static int getTDoubleSize() {
return tDoubleSize;
}
public static int getTByteSize() {
return tByteSize;
}
public static int getTShortSize() {
return tShortSize;
}
public static int getTIntSize() {
return tIntSize;
}
public static int getTLongSize() {
return tLongSize;
}
public static int getTObjectSize() {
return tObjectSize;
}
public static int getTArraySize() {
return tArraySize;
}
public static int getTNarrowOopSize() {
return tNarrowOopSize;
}
public static int getTNarrowKlassSize() {
return tNarrowKlassSize;
}
public static int getTVoidSize() {
return tVoidSize;
}
}