|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.jikesrvm.compilers.common.CompiledMethod org.jikesrvm.compilers.baseline.BaselineCompiledMethod
public final class BaselineCompiledMethod
Compiler-specific information associated with a method's machine instructions.
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 | |
---|---|
private byte[] |
bytecodeMap
Encoded representation of bytecode index to offset in code array map. |
private short |
emptyStackOffset
Offset into stack frame when operand stack is empty |
private int[] |
eTable
Exception table, null if not present. |
private static ExceptionDeliverer |
exceptionDeliverer
Baseline exception deliverer object |
private boolean |
hasCounters
Does the baseline compiled method have a counters array? |
private byte |
lastFixedStackRegister
PPC only: last general purpose register holding part of the operand stack |
private byte |
lastFloatStackRegister
PPC only: last floating point register holding part of the operand stack |
private short[] |
localFixedLocations
PPC only: location of general purpose local variables, positive values are register numbers, negative are stack offsets |
private short[] |
localFloatLocations
PPC only: location of floating point local variables, positive values are register numbers, negative are stack offsets |
private char |
lockOffset
The lock acquisition offset for synchronized methods. |
ReferenceMaps |
referenceMaps
Stack-slot reference maps for the compiled method. |
Fields inherited from class org.jikesrvm.compilers.common.CompiledMethod |
---|
BASELINE, cmid, compilationTime, instructions, JNI, method, NUM_COMPILER_TYPES, OPT, osrJTOCoffset, TRAP |
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 | |
---|---|
BaselineCompiledMethod(int id,
RVMMethod m)
Constructor |
Method Summary | |
---|---|
void |
compile()
Compile method |
void |
encodeMappingInfo(ReferenceMaps referenceMaps,
int[] bcMap)
Encode/compress the bytecode map, reference (GC) map and exception table |
int |
findBytecodeIndexForInstruction(Offset instructionOffset)
Find bytecode index corresponding to one of this method's machine instructions. |
int |
findCatchBlockForInstruction(Offset instructionOffset,
RVMType exceptionType)
Find a catch block within the compiled method |
int |
findLineNumberForInstruction(Offset instructionOffset)
Find source line number corresponding to one of this method's machine instructions. |
String |
getCompilerName()
|
int |
getCompilerType()
Identify the compiler that produced this compiled method. |
void |
getDynamicLink(DynamicLink dynamicLink,
Offset instructionOffset)
Fetch symbolic reference to a method that's called by one of this method's instructions. |
int |
getEmptyStackOffset()
|
ExceptionDeliverer |
getExceptionDeliverer()
Get the exception deliverer for this kind of compiled method |
short |
getFloatLocalLocation(int localIndex)
Location of local floating point variable. |
short |
getFloatStackLocation(int stackIndex)
Offset onto stack of a particular operand stack location for a floating point value |
short |
getGeneralLocalLocation(int localIndex)
Location of local general purpose variable. |
short |
getGeneralStackLocation(int stackIndex)
Offset onto stack of a particular general purpose operand stack location |
int |
getLastFixedStackRegister()
Last general purpose register holding part of the operand stack |
int |
getLastFloatStackRegister()
Last floating point register holding part of the operand stack |
Offset |
getLockAcquisitionOffset()
Get the lock acquisition offset |
boolean |
hasCounterArray()
Does the method have a counters array? |
boolean |
isWithinUninterruptibleCode(Offset instructionOffset)
Return whether or not the given address (which is purported to be inside of the compiled method's code array) corresponds to an uninterruptible context. |
void |
printExceptionTable()
Print the eTable |
void |
printStackTrace(Offset instructionOffset,
PrintLN out)
Print this compiled method's portion of a stack trace |
void |
set(StackBrowser browser,
Offset instr)
Set the stack browser to the innermost logical stack frame of this method |
(package private) void |
setHasCounterArray()
Set the method has a counters array |
void |
setLockAcquisitionOffset(int off)
Set the lock acquisition offset for synchronized methods |
int |
size()
Return the number of bytes used to encode the compiler-specific mapping information for this compiled method. |
boolean |
up(StackBrowser browser)
Advance the StackBrowser up one internal stack frame, if possible |
Methods inherited from class org.jikesrvm.compilers.common.CompiledMethod |
---|
clearActiveOnStack, codeArrayForOffset, compileComplete, compilerTypeToString, containsReturnAddress, getCompilationTime, getEntryCodeArray, getId, getInstructionAddress, getInstructionOffset, getInstructionOffset, getMethod, getOsrJTOCoffset, getSamplesReset, hasBridgeFromNativeAnnotation, isActiveOnStack, isCompiled, isInvalid, isObsolete, isOutdated, isSpecialForOSR, numberOfInstructions, setActiveOnStack, setCompilationTime, setInvalid, setObsolete, setOutdated, setSamplesReset, setSpecialForOSR |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private boolean hasCounters
private char lockOffset
private static final ExceptionDeliverer exceptionDeliverer
public ReferenceMaps referenceMaps
private byte[] bytecodeMap
private int[] eTable
private final short emptyStackOffset
private byte lastFixedStackRegister
private byte lastFloatStackRegister
private final short[] localFixedLocations
private final short[] localFloatLocations
Constructor Detail |
---|
public BaselineCompiledMethod(int id, RVMMethod m)
Method Detail |
---|
public int getEmptyStackOffset()
public short getGeneralLocalLocation(int localIndex)
e.g. to load int: load at BaselineCompilerImpl.locationToOffset(location) - BYTES_IN_INT
e.g. to load long: load at BaselineCompilerImpl.locationToOffset(location) - BYTES_IN_LONG
public short getFloatLocalLocation(int localIndex)
e.g. to load float: load at BaselineCompilerImpl.locationToOffset(location) - BYTES_IN_FLOAT
e.g. to load double: load at BaselineCompilerImpl.locationToOffset(location) - BYTES_IN_DOUBLE
public short getGeneralStackLocation(int stackIndex)
public short getFloatStackLocation(int stackIndex)
public int getLastFixedStackRegister()
public int getLastFloatStackRegister()
public void compile()
public int getCompilerType()
CompiledMethod
getCompilerType
in class CompiledMethod
public String getCompilerName()
getCompilerName
in class CompiledMethod
public ExceptionDeliverer getExceptionDeliverer()
getExceptionDeliverer
in class CompiledMethod
public int findCatchBlockForInstruction(Offset instructionOffset, RVMType exceptionType)
findCatchBlockForInstruction
in class CompiledMethod
instructionOffset
- offset of faulting instruction in compiled codeexceptionType
- the type of the thrown exception
public void getDynamicLink(DynamicLink dynamicLink, Offset instructionOffset)
CompiledMethod
Notes:
getDynamicLink
in class CompiledMethod
dynamicLink
- place to put return informationinstructionOffset
- offset of machine instruction from start of
this method, in bytespublic int findLineNumberForInstruction(Offset instructionOffset)
CompiledMethod
Usage note: "instructionOffset" must point to the instruction following the actual instruction whose line number is sought. This allows us to properly handle the case where the only address we have to work with is a return address (ie. from a stackframe) or an exception address (ie. from a null pointer dereference, array bounds check, or divide by zero) on a machine architecture with variable length instructions. In such situations we'd have no idea how far to back up the instruction pointer to point to the "call site" or "exception site".
findLineNumberForInstruction
in class CompiledMethod
instructionOffset
- of machine instruction from start of this method, in bytes
public boolean isWithinUninterruptibleCode(Offset instructionOffset)
CompiledMethod
isWithinUninterruptibleCode
in class CompiledMethod
instructionOffset
- of addr from start of instructions in bytes
true
if the IP is within an Uninterruptible method, false
otherwise.public int findBytecodeIndexForInstruction(Offset instructionOffset)
instructionOffset
- instruction offset to map to a bytecode index.public void set(StackBrowser browser, Offset instr)
CompiledMethod
set
in class CompiledMethod
public boolean up(StackBrowser browser)
CompiledMethod
up
in class CompiledMethod
public void printStackTrace(Offset instructionOffset, PrintLN out)
CompiledMethod
printStackTrace
in class CompiledMethod
instructionOffset
- offset of machine instruction from start of methodout
- the PrintLN to print the stack trace to.public void printExceptionTable()
public void setLockAcquisitionOffset(int off)
public Offset getLockAcquisitionOffset()
void setHasCounterArray()
public boolean hasCounterArray()
public void encodeMappingInfo(ReferenceMaps referenceMaps, int[] bcMap)
referenceMaps
- to encodebcMap
- unencoded bytecode to code array offset mappublic int size()
CompiledMethod
size
in class CompiledMethod
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |