< prev index next >
src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/BasicTypeSize.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
+ * 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.
@@ -22,26 +22,52 @@
*
*/
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 boolean initialized = false;
- private static int tBooleanSize = 1;
- private static int tCharSize = 1;
- private static int tFloatSize = 1;
- private static int tDoubleSize = 2;
- private static int tByteSize = 1;
- private static int tShortSize = 1;
- private static int tIntSize = 1;
- private static int tLongSize = 2;
- private static int tObjectSize = 1;
- private static int tArraySize = 1;
- private static int tVoidSize = 0;
+ 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;
}
@@ -79,9 +105,17 @@
public static int getTArraySize() {
return tArraySize;
}
+ public static int getTNarrowOopSize() {
+ return tNarrowOopSize;
+ }
+
+ public static int getTNarrowKlassSize() {
+ return tNarrowKlassSize;
+ }
+
public static int getTVoidSize() {
return tVoidSize;
}
}
< prev index next >