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
TraceInterface
public TraceInterface()
gcEnabled
public boolean gcEnabled()
- Returns
true
if the VM is ready for a garbage collection.
- Specified by:
gcEnabled
in class TraceInterface
- Returns:
true
if the VM 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)
- Description copied from class:
TraceInterface
- 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)
- Description copied from class:
TraceInterface
- 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)
- Update an object's death time.
- Specified by:
updateDeathTime
in class TraceInterface
- Parameters:
obj
- the object
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