public interface LIRGeneratorTool extends ArithmeticLIRGenerator, BenchmarkCounterFactory
Modifier and Type | Interface and Description |
---|---|
static class |
LIRGeneratorTool.BlockScope |
static interface |
LIRGeneratorTool.SpillMoveFactory
Factory for creating spill moves.
|
emitAdd, emitAnd, emitDiv, emitFloatConvert, emitMathAbs, emitMathSqrt, emitMul, emitMulHigh, emitNarrow, emitNegate, emitNot, emitOr, emitReinterpret, emitRem, emitShl, emitShr, emitSignExtend, emitSub, emitUDiv, emitUMulHigh, emitURem, emitUShr, emitXor, emitZeroExtend, getLIRKind
createBenchmarkCounter, createMultiBenchmarkCounter
CodeGenProviders getProviders()
TargetDescription target()
MetaAccessProvider getMetaAccess()
CodeCacheProvider getCodeCache()
ForeignCallsProvider getForeignCalls()
AbstractBlockBase<?> getCurrentBlock()
LIRGenerationResult getResult()
boolean hasBlockEnd(AbstractBlockBase<?> block)
LIRGeneratorTool.SpillMoveFactory getSpillMoveFactory()
LIRGeneratorTool.BlockScope getBlockScope(AbstractBlockBase<?> block)
Value emitLoadConstant(LIRKind kind, Constant constant)
Variable emitLoad(LIRKind kind, Value address, LIRFrameState state)
void emitStore(LIRKind kind, Value address, Value input, LIRFrameState state)
void emitNullCheck(Value address, LIRFrameState state)
Variable emitCompareAndSwap(Value address, Value expectedValue, Value newValue, Value trueValue, Value falseValue)
default Value emitAtomicReadAndAdd(Value address, Value delta)
address
- address of the value to be read and writtendelta
- the value to be addeddefault Value emitAtomicReadAndWrite(Value address, Value newValue)
address
- address of the value to be read and writtennewValue
- the new value to be writtenvoid emitDeoptimize(Value actionAndReason, Value failedSpeculation, LIRFrameState state)
Variable emitForeignCall(ForeignCallLinkage linkage, LIRFrameState state, Value... args)
RegisterAttributes attributes(Register register)
Variable newVariable(LIRKind kind)
Variable
.kind
- The type of the value that will be stored in this Variable
. See
LIRKind
for documentation on what to pass here. Note that in most cases,
simply passing Value.getLIRKind()
is wrong.Variable
.void emitMove(AllocatableValue dst, Value src)
void emitData(AllocatableValue dst, byte[] data)
dst
- the variable into which the address is loadeddata
- the data to be installed with the generated codeVariable emitAddress(StackSlotValue slot)
void emitMembar(int barriers)
void emitUnwind(Value operand)
void beforeRegisterAllocation()
void emitIncomingValues(Value[] params)
void emitReturn(Value input)
AllocatableValue asAllocatable(Value value)
Value loadNonConst(Value value)
boolean needOnlyOopMaps()
AllocatableValue resultOperandFor(LIRKind kind)
kind
- the kind of value being returnedkind
<I extends LIRInstruction> I append(I op)
void emitCompareBranch(PlatformKind cmpKind, Value left, Value right, Condition cond, boolean unorderedIsTrue, LabelRef trueDestination, LabelRef falseDestination, double trueDestinationProbability)
void emitOverflowCheckBranch(LabelRef overflow, LabelRef noOverflow, LIRKind cmpKind, double overflowProbability)
void emitIntegerTestBranch(Value left, Value right, LabelRef trueDestination, LabelRef falseDestination, double trueSuccessorProbability)
Variable emitConditionalMove(PlatformKind cmpKind, Value leftVal, Value right, Condition cond, boolean unorderedIsTrue, Value trueValue, Value falseValue)
Variable emitIntegerTestMove(Value leftVal, Value right, Value trueValue, Value falseValue)
void emitStrategySwitch(JavaConstant[] keyConstants, double[] keyProbabilities, LabelRef[] keyTargets, LabelRef defaultTarget, Variable value)
void emitStrategySwitch(SwitchStrategy strategy, Variable key, LabelRef[] keyTargets, LabelRef defaultTarget)
CallingConvention getCallingConvention()
Variable emitBitCount(Value operand)
Variable emitBitScanForward(Value operand)
Variable emitBitScanReverse(Value operand)
Variable emitByteSwap(Value operand)
void emitBlackhole(Value operand)
default Value emitCountLeadingZeros(Value value)
default Value emitCountTrailingZeros(Value value)