All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
Modifier and Type |
Method and Description |
AMD64AddressValue |
asAddressValue(Value address) |
boolean |
canInlineConstant(JavaConstant c)
Checks whether the supplied constant can be used without loading it into a register for most
operations, i.e., for commonly used arithmetic, logical, and comparison operations.
|
protected boolean |
canStoreConstant(JavaConstant c)
Checks whether the supplied constant can be used without loading it into a register for store
operations, i.e., on the right hand side of a memory access.
|
protected AMD64LIRInstruction |
createMove(AllocatableValue dst,
Value src) |
protected LIRInstruction |
createStackMove(AllocatableValue result,
Value input) |
protected LIRInstruction |
createStackMove(AllocatableValue result,
Value input,
Register scratchRegister,
StackSlotValue backupSlot) |
Variable |
emitAdd(LIRKind resultKind,
Value a,
Value b,
boolean setFlags) |
Variable |
emitAddress(StackSlotValue address) |
Variable |
emitAnd(Value a,
Value b) |
Variable |
emitArrayEquals(Kind kind,
Value array1,
Value array2,
Value length) |
Value |
emitAtomicReadAndAdd(Value address,
Value delta)
Emit an atomic read-and-add instruction.
|
Value |
emitAtomicReadAndWrite(Value address,
Value newValue)
Emit an atomic read-and-write instruction.
|
private Variable |
emitBinary(LIRKind resultKind,
AMD64Assembler.AMD64BinaryArithmetic op,
AMD64Assembler.OperandSize size,
boolean commutative,
Value a,
Value b,
boolean setFlags) |
private Variable |
emitBinary(LIRKind resultKind,
AMD64Assembler.AMD64RMOp op,
AMD64Assembler.OperandSize size,
boolean commutative,
Value a,
Value b) |
private Variable |
emitBinaryConst(LIRKind resultKind,
AMD64Assembler.AMD64BinaryArithmetic op,
AMD64Assembler.OperandSize size,
boolean commutative,
AllocatableValue a,
JavaConstant b,
boolean setFlags) |
private Variable |
emitBinaryConst(LIRKind resultKind,
AMD64Assembler.AMD64RMOp op,
AMD64Assembler.OperandSize size,
AllocatableValue a,
JavaConstant b) |
Value |
emitBinaryMemory(AMD64Assembler.AMD64RMOp op,
AMD64Assembler.OperandSize size,
AllocatableValue a,
AMD64AddressValue location,
LIRFrameState state) |
private Variable |
emitBinaryVar(LIRKind resultKind,
AMD64Assembler.AMD64RMOp op,
AMD64Assembler.OperandSize size,
boolean commutative,
AllocatableValue a,
AllocatableValue b) |
Variable |
emitBitCount(Value value) |
Variable |
emitBitScanForward(Value value) |
Variable |
emitBitScanReverse(Value value) |
Variable |
emitByteSwap(Value input) |
abstract void |
emitCCall(long address,
CallingConvention nativeCallingConvention,
Value[] args,
int numberOfFloatingPointArguments) |
private boolean |
emitCompare(PlatformKind cmpKind,
Value a,
Value b)
This method emits the compare instruction, and may reorder the operands.
|
Variable |
emitCompareAndSwap(Value address,
Value expectedValue,
Value newValue,
Value trueValue,
Value falseValue) |
void |
emitCompareBranch(PlatformKind cmpKind,
Value left,
Value right,
Condition cond,
boolean unorderedIsTrue,
LabelRef trueLabel,
LabelRef falseLabel,
double trueLabelProbability) |
void |
emitCompareBranchMemory(Kind cmpKind,
Value left,
AMD64AddressValue right,
LIRFrameState state,
Condition cond,
boolean unorderedIsTrue,
LabelRef trueLabel,
LabelRef falseLabel,
double trueLabelProbability) |
private boolean |
emitCompareMemory(Kind cmpKind,
Value a,
AMD64AddressValue b,
LIRFrameState state)
This method emits the compare against memory instruction, and may reorder the operands.
|
protected boolean |
emitCompareMemoryConOp(AMD64Assembler.OperandSize size,
JavaConstant a,
AMD64AddressValue b,
LIRFrameState state) |
protected void |
emitCompareOp(PlatformKind cmpKind,
Variable left,
Value right) |
private boolean |
emitCompareRegMemoryOp(AMD64Assembler.OperandSize size,
Value a,
AMD64AddressValue b,
LIRFrameState state) |
Variable |
emitConditionalMove(PlatformKind cmpKind,
Value left,
Value right,
Condition cond,
boolean unorderedIsTrue,
Value trueValue,
Value falseValue) |
protected Value |
emitConvertMemoryOp(PlatformKind kind,
AMD64Assembler.AMD64RMOp op,
AMD64Assembler.OperandSize size,
AMD64AddressValue address,
LIRFrameState state) |
private AllocatableValue |
emitConvertOp(LIRKind kind,
AMD64Assembler.AMD64MROp op,
AMD64Assembler.OperandSize size,
Value input) |
private AllocatableValue |
emitConvertOp(LIRKind kind,
AMD64Assembler.AMD64RMOp op,
AMD64Assembler.OperandSize size,
Value input) |
Value |
emitCountLeadingZeros(Value value) |
Value |
emitCountTrailingZeros(Value value) |
void |
emitData(AllocatableValue dst,
byte[] data)
Emits an op that loads the address of some raw data.
|
private AMD64MulDivOp |
emitDIV(AMD64Assembler.OperandSize size,
Value a,
Value b,
LIRFrameState state) |
Value |
emitDiv(Value a,
Value b,
LIRFrameState state) |
Value |
emitFloatConvert(FloatConvert op,
Value input) |
protected void |
emitForeignCallOp(ForeignCallLinkage linkage,
Value result,
Value[] arguments,
Value[] temps,
LIRFrameState info)
Emits the single call operation at the heart of generating LIR for a
foreign call.
|
private AMD64MulDivOp |
emitIDIV(AMD64Assembler.OperandSize size,
Value a,
Value b,
LIRFrameState state) |
private Variable |
emitIMUL(AMD64Assembler.OperandSize size,
Value a,
Value b) |
private Variable |
emitIMULConst(AMD64Assembler.OperandSize size,
AllocatableValue a,
JavaConstant b) |
Value[] |
emitIntegerDivRem(Value a,
Value b,
LIRFrameState state) |
private void |
emitIntegerTest(Value a,
Value b) |
void |
emitIntegerTestBranch(Value left,
Value right,
LabelRef trueDestination,
LabelRef falseDestination,
double trueDestinationProbability) |
Variable |
emitIntegerTestMove(Value left,
Value right,
Value trueValue,
Value falseValue) |
void |
emitJump(LabelRef label) |
Variable |
emitLoad(LIRKind kind,
Value address,
LIRFrameState state) |
Value |
emitMathAbs(Value input) |
Value |
emitMathCos(Value input) |
Value |
emitMathLog(Value input,
boolean base10) |
Value |
emitMathSin(Value input) |
Value |
emitMathSqrt(Value input) |
Value |
emitMathTan(Value input) |
void |
emitMembar(int barriers) |
void |
emitMove(AllocatableValue dst,
Value src) |
Variable |
emitMul(Value a,
Value b,
boolean setFlags) |
private Value |
emitMulHigh(AMD64Assembler.AMD64MOp opcode,
AMD64Assembler.OperandSize size,
Value a,
Value b) |
Value |
emitMulHigh(Value a,
Value b) |
Value |
emitNarrow(Value inputVal,
int bits) |
Variable |
emitNegate(Value inputVal) |
Variable |
emitNot(Value inputVal) |
void |
emitNullCheck(Value address,
LIRFrameState state) |
Variable |
emitOr(Value a,
Value b) |
void |
emitOverflowCheckBranch(LabelRef overflow,
LabelRef noOverflow,
LIRKind cmpLIRKind,
double overflowProbability) |
Value |
emitReinterpret(LIRKind to,
Value inputVal) |
Value |
emitRem(Value a,
Value b,
LIRFrameState state) |
void |
emitReturn(Value input)
Emits a return instruction.
|
Variable |
emitRol(Value a,
Value b) |
Variable |
emitRor(Value a,
Value b) |
private Variable |
emitShift(AMD64Assembler.AMD64Shift op,
AMD64Assembler.OperandSize size,
Value a,
Value b) |
Variable |
emitShl(Value a,
Value b) |
Variable |
emitShr(Value a,
Value b) |
Value |
emitSignExtend(Value inputVal,
int fromBits,
int toBits) |
protected void |
emitStore(Kind kind,
AMD64AddressValue address,
AllocatableValue value,
LIRFrameState state) |
void |
emitStore(LIRKind lirKind,
Value address,
Value input,
LIRFrameState state) |
protected void |
emitStoreConst(Kind kind,
AMD64AddressValue address,
JavaConstant value,
LIRFrameState state) |
void |
emitStrategySwitch(SwitchStrategy strategy,
Variable key,
LabelRef[] keyTargets,
LabelRef defaultTarget) |
Variable |
emitSub(LIRKind resultKind,
Value a,
Value b,
boolean setFlags) |
protected void |
emitTableSwitch(int lowKey,
LabelRef defaultTarget,
LabelRef[] targets,
Value key) |
Variable |
emitUDiv(Value a,
Value b,
LIRFrameState state) |
Value |
emitUMulHigh(Value a,
Value b) |
Variable |
emitURem(Value a,
Value b,
LIRFrameState state) |
Variable |
emitUShr(Value a,
Value b) |
Variable |
emitXor(Value a,
Value b) |
Value |
emitZeroExtend(Value inputVal,
int fromBits,
int toBits) |
protected Value |
emitZeroExtendMemory(Kind memoryKind,
int resultBits,
AMD64AddressValue address,
LIRFrameState state) |
private static AMD64Assembler.AMD64MOp |
getMOp(AMD64Assembler.AMD64BinaryArithmetic op,
int constant) |
protected AMD64LIRGenerator.RegisterBackupPair |
getScratchRegister(PlatformKind kind) |
LIRGeneratorTool.SpillMoveFactory |
getSpillMoveFactory() |
private RegisterValue |
moveToReg(Register reg,
Value v) |
private static LIRKind |
toStackKind(LIRKind kind) |