APIdia Launch Partner
Top Description Fields Constructors Methods
sun.jvm.hotspot.runtime

public abstract Class RegisterMap

extends Object
implements Cloneable
Class Inheritance
All Implemented Interfaces
java.lang.Cloneable
Known Direct Subclasses
sun.jvm.hotspot.runtime.aarch64.AARCH64RegisterMap, sun.jvm.hotspot.runtime.amd64.AMD64RegisterMap, sun.jvm.hotspot.runtime.ppc64.PPC64RegisterMap, sun.jvm.hotspot.runtime.riscv64.RISCV64RegisterMap
Imports
java.io.*, java.util.*, sun.jvm.hotspot.debugger.*, sun.jvm.hotspot.interpreter.*, sun.jvm.hotspot.code.*, sun.jvm.hotspot.types.*, sun.jvm.hotspot.utilities.*, .Observable, .Observer

A companion structure used for stack traversal. The RegisterMap contains misc. information needed in order to do correct stack traversal of stack frames. Hence, it must always be passed in as an argument to Frame.sender(RegisterMap).

The use of RegisterMaps is slightly different in the Serviceability Agent APIs than in the VM itself. In the VM, a RegisterMap is created either for a particular thread or cloned from another RegisterMap. In these APIs, a JavaThread is the top-level factory for RegisterMaps, and RegisterMaps know how to copy themselves (through either the clone() or copy() methods).

Field Summary

Modifier and TypeField and Description
protected boolean
includeArgumentOops

Should include argument_oop marked locations for compiler

protected Address[]
location

Location of registers

protected long[]
protected static int
protected static int
protected static int
regCount

Location of a frame where the pc is not at a call (NULL if no frame exists)

protected JavaThread
thread

Reference to current thread

protected boolean
updateMap

Tells if the register map needs to be updated when traversing the stack

Constructor Summary

AccessConstructor and Description
protected
RegisterMap(JavaThread thread, boolean updateMap)

protected
RegisterMap(RegisterMap map)

Makes a copy of map into this

Method Summary

Modifier and TypeMethod and Description
public void
protected abstract void
clearPD()

Platform-dependent clear() functionality

public abstract Object
clone()

Overrides java.lang.Object.clone.

Creates and returns a copy of this object.

public RegisterMap
copy()

public boolean
public Address
protected abstract Address
getLocationPD(VMReg reg)

Platform-dependent getLocation() functionality

public JavaThread
public boolean
private static void
protected abstract void
initializeFromPD(RegisterMap map)

Platform-dependent initializeFrom() functionality

protected abstract void
initializePD()

Platform-dependent initialize() functionality

public void
public void
public void
Inherited from java.lang.Object:
equalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

includeArgumentOopsback to summary
protected boolean includeArgumentOops

Should include argument_oop marked locations for compiler

locationback to summary
protected Address[] location

Location of registers

locationValidback to summary
protected long[] locationValid
locationValidSizeback to summary
protected static int locationValidSize
locationValidTypeSizeback to summary
protected static int locationValidTypeSize
regCountback to summary
protected static int regCount

Location of a frame where the pc is not at a call (NULL if no frame exists)

threadback to summary
protected JavaThread thread

Reference to current thread

updateMapback to summary
protected boolean updateMap

Tells if the register map needs to be updated when traversing the stack

Constructor Detail

RegisterMapback to summary
protected RegisterMap(JavaThread thread, boolean updateMap)
RegisterMapback to summary
protected RegisterMap(RegisterMap map)

Makes a copy of map into this

Method Detail

clearback to summary
public void clear()
clearPDback to summary
protected abstract void clearPD()

Platform-dependent clear() functionality

cloneback to summary
public abstract Object clone()

Overrides java.lang.Object.clone.

Doc from java.lang.Object.clone.

Creates and returns a copy of this object. The precise meaning of "copy" may depend on the class of the object. The general intent is that, for any object x, the expression:

x.clone() != x
will be true, and that the expression:
x.clone().getClass() == x.getClass()
will be true, but these are not absolute requirements. While it is typically the case that:
x.clone().equals(x)
will be true, this is not an absolute requirement.

By convention, the returned object should be obtained by calling super.clone. If a class and all of its superclasses (except Object) obey this convention, it will be the case that x.clone().getClass() == x.getClass().

By convention, the object returned by this method should be independent of this object (which is being cloned). To achieve this independence, it may be necessary to modify one or more fields of the object returned by super.clone before returning it. Typically, this means copying any mutable objects that comprise the internal "deep structure" of the object being cloned and replacing the references to these objects with references to the copies. If a class contains only primitive fields or references to immutable objects, then it is usually the case that no fields in the object returned by super.clone need to be modified.

copyback to summary
public RegisterMap copy()
getIncludeArgumentOopsback to summary
public boolean getIncludeArgumentOops()
getLocationback to summary
public Address getLocation(VMReg reg)
getLocationPDback to summary
protected abstract Address getLocationPD(VMReg reg)

Platform-dependent getLocation() functionality

getThreadback to summary
public JavaThread getThread()
getUpdateMapback to summary
public boolean getUpdateMap()
initializeback to summary
private static void initialize(TypeDataBase db)
initializeFromPDback to summary
protected abstract void initializeFromPD(RegisterMap map)

Platform-dependent initializeFrom() functionality

initializePDback to summary
protected abstract void initializePD()

Platform-dependent initialize() functionality

printOnback to summary
public void printOn(PrintStream tty)
setIncludeArgumentOopsback to summary
public void setIncludeArgumentOops(boolean f)
setLocationback to summary
public void setLocation(VMReg reg, Address loc)