public static final class AArch64ControlFlow.HashTableSwitchOp extends AArch64BlockEndOp
The JumpTable is indexed via hash and the actions taken dependent on whether a
defaultTarget is provided:
If a defaultTarget is provided, then the JumpTable uses the VALUE_AND_OFFSET format and
originalValue must be checked against the value within the JumpTable. If the values
match, then corresponding target (JumpTableStart + JumpTable[hash].OFFSET) is jumped to;
otherwise, the code jumps to the default target.
If a defaultTarget is not provided, then the JumpTable uses the OFFSET_ONLY format and JumpTableStart + JumpTable[hash] can be immediately jumped to.
LIRInstruction.Alive, LIRInstruction.Def, LIRInstruction.OperandFlag, LIRInstruction.OperandMode, LIRInstruction.State, LIRInstruction.Temp, LIRInstruction.Use| Modifier and Type | Field and Description |
|---|---|
protected AllocatableValue |
hash |
protected AllocatableValue |
originalValue |
static LIRInstructionClass<AArch64ControlFlow.HashTableSwitchOp> |
TYPE |
ADDRESS_FLAGS, ALLOWED_FLAGS| Constructor and Description |
|---|
HashTableSwitchOp(JavaConstant[] keys,
LabelRef defaultTarget,
LabelRef[] targets,
AllocatableValue originalValue,
AllocatableValue hash) |
| Modifier and Type | Method and Description |
|---|---|
void |
emitCode(CompilationResultBuilder crb,
AArch64MacroAssembler masm) |
emitCodeaddStackSlotsToTemporaries, destroysCallerSavedRegisters, forEachAlive, forEachAlive, forEachInput, forEachInput, forEachOutput, forEachOutput, forEachRegisterHint, forEachRegisterHint, forEachState, forEachState, forEachState, forEachState, forEachTemp, forEachTemp, getComment, getLIRInstructionClass, getPosition, hashCode, hasOperands, hasState, id, isLoadConstantOp, isMoveOp, isValueMoveOp, name, needsClearUpperVectorRegisters, setComment, setId, setPosition, toString, toString, toStringWithIdPrefix, verify, visitEachAlive, visitEachAlive, visitEachInput, visitEachInput, visitEachOutput, visitEachOutput, visitEachState, visitEachState, visitEachTemp, visitEachTemppublic static final LIRInstructionClass<AArch64ControlFlow.HashTableSwitchOp> TYPE
protected AllocatableValue originalValue
protected AllocatableValue hash
public void emitCode(CompilationResultBuilder crb, AArch64MacroAssembler masm)
emitCode in class AArch64BlockEndOp