|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.jikesrvm.mm.mminterface.GCMapIterator
org.jikesrvm.jni.ia32.JNIGCMapIterator
public abstract class JNIGCMapIterator
Iterator for stack frames inserted at the transition from Java to JNI Native C. It will report JREFs associated with the executing C frames which are in the "JREFs stack" attached to the executing Threads JNIEnvironment. It will update register location addresses for the non-volatile registers to point to the registers saved in the transition frame.
JNICompiler| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from interface org.jikesrvm.ia32.RegisterConstants |
|---|
RegisterConstants.FloatingPointMachineRegister, RegisterConstants.FPR, RegisterConstants.GPR, RegisterConstants.MachineRegister, RegisterConstants.MM, RegisterConstants.XMM |
| Field Summary | |
|---|---|
(package private) int |
jniFramePtr
|
(package private) int |
jniNextRef
|
(package private) AddressArray |
jniRefs
|
| Fields inherited from class org.jikesrvm.mm.mminterface.GCMapIterator |
|---|
framePtr, registerLocations, thread |
| Fields inherited from interface org.jikesrvm.ia32.BaselineConstants |
|---|
BRIDGE_FRAME_EXTRA_SIZE, EBP_SAVE_OFFSET, EBX_SAVE_OFFSET, EDI_SAVE_OFFSET, FPU_SAVE_OFFSET, LG_WORDSIZE, S0, S1, SAVED_GPRS, SAVED_GPRS_FOR_SAVE_LS_REGISTERS, SP, STACKFRAME_FIRST_PARAMETER_OFFSET, STACKFRAME_REG_SAVE_OFFSET, T0, T0_int, T0_SAVE_OFFSET, T1, T1_int, T1_SAVE_OFFSET, TR, WORDSIZE, XMM_SAVE_OFFSET |
| Fields inherited from interface org.jikesrvm.Constants |
|---|
NOT_REACHED, REFLECTION_FPRS_BITS, REFLECTION_FPRS_MASK, REFLECTION_GPRS_BITS, REFLECTION_GPRS_MASK |
| Fields inherited from interface org.jikesrvm.objectmodel.ThinLockConstants |
|---|
TL_DEDICATED_U16_OFFSET, TL_DEDICATED_U16_SHIFT, TL_LOCK_COUNT_MASK, TL_LOCK_COUNT_SHIFT, TL_LOCK_COUNT_UNIT, TL_LOCK_ID_MASK, TL_LOCK_ID_SHIFT, TL_NUM_BITS_RC, TL_NUM_BITS_STAT, TL_NUM_BITS_TID, TL_STAT_BIASABLE, TL_STAT_FAT, TL_STAT_MASK, TL_STAT_SHIFT, TL_STAT_THIN, TL_THREAD_ID_MASK, TL_THREAD_ID_SHIFT, TL_UNLOCK_MASK |
| Fields inherited from interface org.jikesrvm.objectmodel.TIBLayoutConstants |
|---|
IMT_METHOD_SLOTS, NEEDS_DYNAMIC_LINK, TIB_ARRAY_ELEMENT_TIB_INDEX, TIB_DOES_IMPLEMENT_INDEX, TIB_FIRST_SPECIALIZED_METHOD_INDEX, TIB_FIRST_VIRTUAL_METHOD_INDEX, TIB_INTERFACE_DISPATCH_TABLE_INDEX, TIB_SUPERCLASS_IDS_INDEX, TIB_TYPE_INDEX |
| Fields inherited from interface org.jikesrvm.HeapLayoutConstants |
|---|
BAD_MAP_COMPRESSION, BOOT_IMAGE_CODE_END, BOOT_IMAGE_CODE_SIZE, BOOT_IMAGE_CODE_START, BOOT_IMAGE_DATA_END, BOOT_IMAGE_DATA_SIZE, BOOT_IMAGE_DATA_START, BOOT_IMAGE_END, BOOT_IMAGE_RMAP_END, BOOT_IMAGE_RMAP_START, MAX_BOOT_IMAGE_RMAP_SIZE, MAXIMUM_MAPPABLE |
| Fields inherited from interface org.jikesrvm.ia32.ArchConstants |
|---|
SSE2_BASE, SSE2_FULL |
| Fields inherited from interface org.jikesrvm.ia32.RegisterConstants |
|---|
ALL_FPRS, ALL_GPRS, EAX, EBP, EBX, ECX, EDI, EDX, ESI, ESP, FP0, FP1, FP2, FP3, FP4, FP5, FP6, FP7, INSTRUCTION_WIDTH, LG_INSTRUCTION_WIDTH, MM0, MM1, MM10, MM11, MM12, MM13, MM14, MM15, MM2, MM3, MM4, MM5, MM6, MM7, MM8, MM9, NATIVE_NONVOLATILE_FPRS, NATIVE_NONVOLATILE_GPRS, NATIVE_PARAMETER_FPRS, NATIVE_PARAMETER_GPRS, NATIVE_VOLATILE_FPRS, NATIVE_VOLATILE_GPRS, NONVOLATILE_FPRS, NONVOLATILE_GPRS, NUM_FPRS, NUM_GPRS, NUM_NONVOLATILE_FPRS, NUM_NONVOLATILE_GPRS, NUM_PARAMETER_FPRS, NUM_PARAMETER_GPRS, NUM_RETURN_FPRS, NUM_RETURN_GPRS, NUM_VOLATILE_FPRS, NUM_VOLATILE_GPRS, PARAMETER_FPRS, PARAMETER_GPRS, R0, R1, R10, R11, R12, R13, R14, R15, R2, R3, R4, R5, R6, R7, R8, R9, RETURN_FPRS, RETURN_GPRS, STACK_POINTER, THREAD_REGISTER, VOLATILE_FPRS, VOLATILE_GPRS, XMM0, XMM1, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, XMM8, XMM9 |
| Fields inherited from interface org.jikesrvm.ia32.TrapConstants |
|---|
RVM_TRAP_BASE |
| Constructor Summary | |
|---|---|
JNIGCMapIterator(WordArray registerLocations)
|
|
| Method Summary | |
|---|---|
void |
cleanupPointers()
Iteration is complete, release any internal data structures including locks acquired during setupIterator for jsr maps. |
Address |
getNextReferenceAddress()
Get address of next object reference held by current stackframe. |
Address |
getNextReturnAddressAddress()
Get address of next JSR return address held by current stackframe. |
int |
getType()
Get the type of this iterator (BASELINE, OPT, etc.). |
void |
newStackWalk(RVMThread thread)
Prepare to scan a thread's stack and saved registers for object references. |
void |
reset()
Prepare to re-iterate on same stackframe, and to switch between "reference" iteration and "JSR return address" iteration. |
void |
setupIterator(CompiledMethod compiledMethod,
Offset instructionOffset,
Address framePtr)
Prepare to iterate over object references and JSR return addresses held by a stackframe. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
AddressArray jniRefs
int jniNextRef
int jniFramePtr
| Constructor Detail |
|---|
public JNIGCMapIterator(WordArray registerLocations)
| Method Detail |
|---|
public void newStackWalk(RVMThread thread)
GCMapIterator
newStackWalk in class GCMapIteratorthread - Thread whose stack is being scanned
public void setupIterator(CompiledMethod compiledMethod,
Offset instructionOffset,
Address framePtr)
GCMapIterator
setupIterator in class GCMapIteratorcompiledMethod - method running in the stackframeinstructionOffset - offset of current instruction within that method's codeframePtr - address of stackframe to be visitedpublic Address getNextReferenceAddress()
GCMapIteratorSide effect: registerLocations[] updated at end of iteration. TODO: registerLocations[] update should be done via separately called method instead of as side effect.
getNextReferenceAddress in class GCMapIteratorpublic Address getNextReturnAddressAddress()
GCMapIterator
getNextReturnAddressAddress in class GCMapIteratorpublic void reset()
GCMapIterator
reset in class GCMapIteratorpublic void cleanupPointers()
GCMapIterator
cleanupPointers in class GCMapIteratorpublic int getType()
GCMapIterator
getType in class GCMapIterator
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||