public class HotSpotTypeDataBase extends BasicTypeDataBase
This is the cross-platform TypeDataBase used by the Oop hierarchy. The decision was made to make this cross-platform by having the VM export the necessary symbols via a built-in table; see src/share/vm/runtime/vmStructs.[ch]pp for more details.
WARNING: clients should refer to this class through the TypeDataBase interface and not directly to the HotSpotTypeDataBase type.
NOTE: since we are fetching the sizes of the Java primitive types
Constructor and Description |
---|
HotSpotTypeDataBase(MachineDescription machDesc,
VtblAccess vtblAccess,
Debugger symbolLookup,
java.lang.String[] jvmLibNames)
This requires a SymbolLookup mechanism as well as the
MachineDescription.
|
Modifier and Type | Method and Description |
---|---|
void |
createField(BasicType containingType,
java.lang.String name,
Type type,
boolean isStatic,
long offset,
Address staticFieldAddress)
"Virtual constructor" for fields based on type
|
void |
createType(java.lang.String typeName,
java.lang.String superclassName,
boolean isOopType,
boolean isIntegerType,
boolean isUnsigned,
long size) |
Type |
lookupType(java.lang.String cTypeName,
boolean throwException)
For simplicity of the initial implementation, this is not
guaranteed to work for primitive types.
|
addIntConstant, addLongConstant, addressTypeIsEqualToType, addType, cIntegerTypeMaxValue, cIntegerTypeMinValue, findDynamicTypeForAddress, getAddressSize, getIntConstants, getJBooleanType, getJByteType, getJCharType, getJDoubleType, getJFloatType, getJIntType, getJLongType, getJShortType, getLongConstants, getOopSize, getTypes, guessTypeForAddress, lookupIntConstant, lookupIntConstant, lookupLongConstant, lookupLongConstant, lookupType, removeIntConstant, removeLongConstant, removeType, setJBooleanType, setJByteType, setJCharType, setJDoubleType, setJFloatType, setJIntType, setJLongType, setJShortType
public HotSpotTypeDataBase(MachineDescription machDesc, VtblAccess vtblAccess, Debugger symbolLookup, java.lang.String[] jvmLibNames) throws NoSuchSymbolException
This requires a SymbolLookup mechanism as well as the MachineDescription. Note that we do not need a NameMangler since we use the vmStructs mechanism to avoid looking up C++ symbols.
NOTE that it is guaranteed that this constructor will not attempt to fetch any Java values from the remote process, only C integers and addresses. This is required because we are fetching the sizes of the Java primitive types from the remote process, implying that attempting to fetch them before their sizes are known is illegal.
Throws NoSuchSymbolException if a problem occurred while looking up one of the bootstrapping symbols related to the VMStructs table in the remote VM; this may indicate that the remote process is not actually a HotSpot VM.
NoSuchSymbolException
public Type lookupType(java.lang.String cTypeName, boolean throwException)
TypeDataBase
lookupType
in interface TypeDataBase
lookupType
in class BasicTypeDataBase
public void createType(java.lang.String typeName, java.lang.String superclassName, boolean isOopType, boolean isIntegerType, boolean isUnsigned, long size)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.