public class DeoptimizationStub extends SnippetStub
ATTENTION: We cannot do any complicated operations e.g. logging via printf in this snippet because we change the current stack layout and so the code is very sensitive to register allocation.
Modifier and Type | Field and Description |
---|---|
private TargetDescription |
target |
method, SnippetGraphUnderConstruction
code, compResult, linkage, providers
Constructor and Description |
---|
DeoptimizationStub(HotSpotProviders providers,
TargetDescription target,
HotSpotForeignCallLinkage linkage) |
Modifier and Type | Method and Description |
---|---|
private static void |
deoptimizationHandler(Register threadRegister,
Register stackPointerRegister)
Deoptimization handler for normal deoptimization
HotSpotVMConfig.deoptimizationUnpackDeopt . |
private static int |
deoptimizationUnpackDeopt() |
private static int |
deoptimizationUnpackUncommonTrap() |
private static int |
deoptimizationUnrollBlockCallerAdjustmentOffset() |
private static int |
deoptimizationUnrollBlockFramePcsOffset() |
private static int |
deoptimizationUnrollBlockFrameSizesOffset() |
private static int |
deoptimizationUnrollBlockInitialInfoOffset() |
private static int |
deoptimizationUnrollBlockNumberOfFramesOffset() |
private static int |
deoptimizationUnrollBlockSizeOfDeoptimizedFrameOffset() |
private static int |
deoptimizationUnrollBlockTotalFrameSizesOffset() |
protected Object |
getConstantParameterValue(int index,
String name) |
boolean |
preservesRegisters()
Determines if this stub preserves all registers apart from those it
destroys.
|
private static Word |
readRegister(Register register)
Reads the value of the passed register as a Word.
|
private static int |
stackBias()
Deprecated.
This method should go away as soon as JDK-8032410 hits the Graal repository.
|
private static int |
stackShadowPages() |
static int |
unpackFrames(ForeignCallDescriptor unpackFrames,
Word thread,
int mode) |
private static void |
writeRegister(Register register,
Word value)
Writes the value of the passed register.
|
checkConstArg, debugScopeContext, getGraph, getInstalledCodeOwner, makeConstArgs, toString
getCode, getCompilationResult, getDestroyedRegisters, getLinkage, getRegisterConfig, getStubs, initDestroyedRegisters
private final TargetDescription target
public DeoptimizationStub(HotSpotProviders providers, TargetDescription target, HotSpotForeignCallLinkage linkage)
public boolean preservesRegisters()
Stub
preservesRegisters
in class Stub
protected Object getConstantParameterValue(int index, String name)
getConstantParameterValue
in class SnippetStub
private static void deoptimizationHandler(Register threadRegister, Register stackPointerRegister)
HotSpotVMConfig.deoptimizationUnpackDeopt
.private static Word readRegister(Register register)
private static void writeRegister(Register register, Word value)
value
- value the register should be set toprivate static int stackShadowPages()
@Deprecated private static int stackBias()
private static int deoptimizationUnrollBlockSizeOfDeoptimizedFrameOffset()
private static int deoptimizationUnrollBlockCallerAdjustmentOffset()
private static int deoptimizationUnrollBlockNumberOfFramesOffset()
private static int deoptimizationUnrollBlockTotalFrameSizesOffset()
private static int deoptimizationUnrollBlockFrameSizesOffset()
private static int deoptimizationUnrollBlockFramePcsOffset()
private static int deoptimizationUnrollBlockInitialInfoOffset()
private static int deoptimizationUnpackDeopt()
private static int deoptimizationUnpackUncommonTrap()
public static int unpackFrames(ForeignCallDescriptor unpackFrames, Word thread, int mode)