org.jikesrvm.mm.mmtk
Class TraceInterface
java.lang.Object
org.mmtk.vm.TraceInterface
org.jikesrvm.mm.mmtk.TraceInterface
- All Implemented Interfaces:
- ArchitectureSpecific.ArchConstants, ArchConstants, RegisterConstants, StackframeLayoutConstants, TrapConstants
public final class TraceInterface
- extends TraceInterface
- implements ArchitectureSpecific.ArchConstants
Class that supports scanning Objects or Arrays for references
during tracing, handling those references, and computing death times
| Fields inherited from interface org.jikesrvm.ia32.StackframeLayoutConstants |
BYTES_IN_STACKSLOT, FPU_STATE_SIZE, INVISIBLE_METHOD_ID, LOG_BYTES_IN_STACKSLOT, STACK_SIZE_BOOT, STACK_SIZE_COLLECTOR, STACK_SIZE_DLOPEN, STACK_SIZE_GCDISABLED, STACK_SIZE_GROW, STACK_SIZE_GUARD, STACK_SIZE_JNINATIVE_GROW, STACK_SIZE_MAX, STACK_SIZE_NORMAL, STACK_SIZE_SYSCALL, STACKFRAME_ALIGNMENT, STACKFRAME_BODY_OFFSET, STACKFRAME_FRAME_POINTER_OFFSET, STACKFRAME_HEADER_SIZE, STACKFRAME_METHOD_ID_OFFSET, STACKFRAME_RETURN_ADDRESS_OFFSET, STACKFRAME_SENTINEL_FP, XMM_STATE_SIZE |
| 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 |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
allocCallMethods
private static byte[][] allocCallMethods
- Class variables
TraceInterface
public TraceInterface()
gcEnabled
public boolean gcEnabled()
- Returns if the VM is ready for a garbage collection.
- Specified by:
gcEnabled in class TraceInterface
- Returns:
- True if the RVM is ready for GC, false otherwise.
isAllocCall
private boolean isAllocCall(byte[] name)
- Given a method name, determine if it is a "real" method or one
used for allocation/tracing.
- Parameters:
name - The method name to test as an array of bytes
- Returns:
- True if the method is a "real" method, false otherwise.
adjustSlotOffset
public Offset adjustSlotOffset(boolean isScalar,
ObjectReference src,
Address slot)
- This adjusts the offset into an object to reflect what it would look like
if the fields were laid out in memory space immediately after the object
pointer.
- Specified by:
adjustSlotOffset in class TraceInterface
- Parameters:
isScalar - If this is a pointer store to a scalar objectsrc - The address of the source objectslot - The address within src into which
the update will be stored
- Returns:
- The easy to understand offset of the slot
skipOwnFramesAndDump
public Address skipOwnFramesAndDump(ObjectReference typeRef)
- This skips over the frames added by the tracing algorithm, outputs
information identifying the method the containts the "new" call triggering
the allocation, and returns the address of the first non-trace, non-alloc
stack frame.
- Specified by:
skipOwnFramesAndDump in class TraceInterface
- Parameters:
typeRef - The type reference (tib) of the object just allocated
- Returns:
- The frame pointer address for the method that allocated the object
updateDeathTime
public void updateDeathTime(ObjectReference obj)
- Wrapper methods
- Specified by:
updateDeathTime in class TraceInterface
setDeathTime
public void setDeathTime(ObjectReference ref,
Word time_)
- Specified by:
setDeathTime in class TraceInterface
setLink
public void setLink(ObjectReference ref,
ObjectReference link)
- Specified by:
setLink in class TraceInterface
updateTime
public void updateTime(Word time_)
- Specified by:
updateTime in class TraceInterface
getOID
public Word getOID(ObjectReference ref)
- Specified by:
getOID in class TraceInterface
getDeathTime
public Word getDeathTime(ObjectReference ref)
- Specified by:
getDeathTime in class TraceInterface
getLink
public ObjectReference getLink(ObjectReference ref)
- Specified by:
getLink in class TraceInterface
getBootImageLink
public Address getBootImageLink()
- Specified by:
getBootImageLink in class TraceInterface
getOID
public Word getOID()
- Specified by:
getOID in class TraceInterface
setOID
public void setOID(Word oid)
- Specified by:
setOID in class TraceInterface
getHeaderSize
public int getHeaderSize()
- Specified by:
getHeaderSize in class TraceInterface
getHeaderEndOffset
public int getHeaderEndOffset()
- Specified by:
getHeaderEndOffset in class TraceInterface