| Index: src/compiler/instruction-selector-impl.h
|
| diff --git a/src/compiler/instruction-selector-impl.h b/src/compiler/instruction-selector-impl.h
|
| index cd41e42eff0243ca060416d3857cd63271dd7218..8543aa0b19604dec163c9801a210ec686d0ee691 100644
|
| --- a/src/compiler/instruction-selector-impl.h
|
| +++ b/src/compiler/instruction-selector-impl.h
|
| @@ -72,6 +72,14 @@ class OperandGenerator {
|
| return Define(node, ToUnallocatedOperand(location, type, GetVReg(node)));
|
| }
|
|
|
| + InstructionOperand DefineAsDualLocation(Node* node,
|
| + LinkageLocation primary_location,
|
| + LinkageLocation secondary_location) {
|
| + return Define(node,
|
| + ToDualLocationUnallocatedOperand(
|
| + primary_location, secondary_location, GetVReg(node)));
|
| + }
|
| +
|
| InstructionOperand Use(Node* node) {
|
| return Use(node, UnallocatedOperand(UnallocatedOperand::NONE,
|
| UnallocatedOperand::USED_AT_START,
|
| @@ -211,6 +219,18 @@ class OperandGenerator {
|
| return operand;
|
| }
|
|
|
| + UnallocatedOperand ToDualLocationUnallocatedOperand(
|
| + LinkageLocation primary_location, LinkageLocation secondary_location,
|
| + int virtual_register) {
|
| + // We only support the primary location being a register and the secondary
|
| + // one a slot.
|
| + DCHECK(primary_location.IsRegister() &&
|
| + secondary_location.IsCalleeFrameSlot());
|
| + int reg_id = primary_location.AsRegister();
|
| + int slot_id = secondary_location.AsCalleeFrameSlot();
|
| + return UnallocatedOperand(reg_id, slot_id, virtual_register);
|
| + }
|
| +
|
| UnallocatedOperand ToUnallocatedOperand(LinkageLocation location,
|
| MachineType type,
|
| int virtual_register) {
|
|
|