| Modifier and Type | Method and Description |
|---|---|
| public boolean | addressTypeIsEqualToType(Address addr, Type type)
This is an experimental interface emulating C++'s run-time type information (RTTI) mechanism: determines whether the given address is a pointer to the start of a C++ object of precisely the given type -- it does not search superclasses of the type. |
| public Type | findDynamicTypeForAddress(Address addr, Type baseType)
Helper routine for guessing the most derived type of a polymorphic C++ object. |
| public long | |
| public Iterator | getIntConstants()
Returns an Iterator over the String names of the integer constants in the database. |
| public Type | getJBooleanType()
Accessors for types representing the Java primitive types; used for both proper type checking and for walking down Java arrays. |
| public Type | |
| public Type | |
| public Type | |
| public Type | |
| public Type | |
| public Type | |
| public Type | |
| public Iterator | |
| public long | |
| public Iterator | |
| public Type | guessTypeForAddress(Address addr)
Helper routine for guessing the most derived type of a polymorphic C++ object. |
| public Integer | |
| public Integer | |
| public Long | |
| public Long | |
| public Type | |
| public Type | lookupType(String cTypeName, boolean throwException)
For simplicity of the initial implementation, this is not guaranteed to work for primitive types. |
| addressTypeIsEqualToType | back to summary |
|---|---|
| public boolean addressTypeIsEqualToType(Address addr, Type type) This is an experimental interface emulating C++'s run-time type information (RTTI) mechanism: determines whether the given address is a pointer to the start of a C++ object of precisely the given type -- it does not search superclasses of the type. The convention is that this returns false for the null pointer. It is needed to allow wrapper Java objects of the appropriate type to be constructed for existing C++ objects of polymorphic type. This method is only intended to work for C++ types (implying that we should rename this package and the classes contained within back to "ctypes"). Further, since the vptr offset in an object is known at compile time but not necessarily at runtime (unless debugging information is available), it is reasonable for an implementation of this method to search nearby memory for the (known) vtbl value for the given type. For this reason, this method is not intended to support scans through memory finding C++ objects, but is instead targeted towards discovering the true type of a pointer assumed to be intact. The reason this method was placed in the type database is that the latter is the first level at which it could be exposed, and placing it here could avoid modifying the Type interface. It is unclear what other, if any, vtbl access would be useful (or implementable), so we are trying to avoid changing interfaces at this point to support this kind of functionality. This method necessarily does not support multiple inheritance. | |
| findDynamicTypeForAddress | back to summary |
|---|---|
| public Type findDynamicTypeForAddress(Address addr, Type baseType) Helper routine for guessing the most derived type of a polymorphic C++ object. Requires a baseType that must be virtual so that lookup can be performed without false positives | |
| getAddressSize | back to summary |
|---|---|
| public long getAddressSize() Returns the size of a C address in bytes. This is currently needed in order to properly traverse an array of pointers. Traversing an array of structs, for example, is possible by looking up the type of the struct and multiplying the index by its size when indexing off of a base Address. (FIXME: what about alignment?) | |
| getIntConstants | back to summary |
|---|---|
| public Iterator Returns an Iterator over the String names of the integer constants in the database. | |
| getJBooleanType | back to summary |
|---|---|
| public Type getJBooleanType() Accessors for types representing the Java primitive types; used for both proper type checking and for walking down Java arrays. | |
| getJByteType | back to summary |
|---|---|
| public Type getJByteType() | |
| getJCharType | back to summary |
|---|---|
| public Type getJCharType() | |
| getJDoubleType | back to summary |
|---|---|
| public Type getJDoubleType() | |
| getJFloatType | back to summary |
|---|---|
| public Type getJFloatType() | |
| getJIntType | back to summary |
|---|---|
| public Type getJIntType() | |
| getJLongType | back to summary |
|---|---|
| public Type getJLongType() | |
| getJShortType | back to summary |
|---|---|
| public Type getJShortType() | |
| getLongConstants | back to summary |
|---|---|
| public Iterator Returns an Iterator over the String names of the long constants in the database. | |
| getOopSize | back to summary |
|---|---|
| public long getOopSize() Returns the size of an oop in bytes. This is currently needed in order to properly traverse an array of oops; it is distinguished from the address size, above, because object pointers could conceivably have a different representation than direct pointers. Traversing an array of structs, for example, is possible by looking up the type of the struct and multiplying the index by its size when indexing off of a base Address. | |
| getTypes | back to summary |
|---|---|
| public Iterator Returns an Iterator over the Types in the database. | |
| guessTypeForAddress | back to summary |
|---|---|
| public Type guessTypeForAddress(Address addr) Helper routine for guessing the most derived type of a polymorphic C++ object. Iterates the type database calling addressTypeIsEqualToType for all known types. Returns a matching Type for the given address if one was found, or null if none was found. | |
| lookupIntConstant | back to summary |
|---|---|
| public Integer lookupIntConstant(String constantName) Equivalent to lookupIntConstant(constantName, true) | |
| lookupIntConstant | back to summary |
|---|---|
| public Integer lookupIntConstant(String constantName, boolean throwException) | |
| lookupLongConstant | back to summary |
|---|---|
| public Long lookupLongConstant(String constantName) Equivalent to lookupLongConstant(constantName, true) | |
| lookupLongConstant | back to summary |
|---|---|
| public Long lookupLongConstant(String constantName, boolean throwException) | |
| lookupType | back to summary |
|---|---|
| public Type lookupType(String cTypeName) Equivalent to lookupType(cTypeName, true) | |
| lookupType | back to summary |
|---|---|
| public Type lookupType(String cTypeName, boolean throwException) For simplicity of the initial implementation, this is not guaranteed to work for primitive types. If throwException is true, throws an (unspecified) run-time exception if the type is not found. | |