| Index: src/compiler/instruction-selector-impl.h
|
| diff --git a/src/compiler/instruction-selector-impl.h b/src/compiler/instruction-selector-impl.h
|
| index b34a914efcca285a4a80aa6470be2b16a7d8893b..0dde2a4e6c4e405d0edad075ce390eb2f0cc83e6 100644
|
| --- a/src/compiler/instruction-selector-impl.h
|
| +++ b/src/compiler/instruction-selector-impl.h
|
| @@ -75,15 +75,29 @@ class OperandGenerator {
|
| }
|
|
|
| InstructionOperand Use(Node* node) {
|
| - return Use(node, UnallocatedOperand(UnallocatedOperand::NONE,
|
| - UnallocatedOperand::USED_AT_START,
|
| - GetVReg(node)));
|
| + IrOpcode::Value opcode = node->opcode();
|
| + if (opcode == IrOpcode::kLoadFramePointer) {
|
| + return FramePointerOperand();
|
| + } else if (opcode == IrOpcode::kLoadStackPointer) {
|
| + return StackPointerOperand();
|
| + } else {
|
| + return Use(node, UnallocatedOperand(UnallocatedOperand::NONE,
|
| + UnallocatedOperand::USED_AT_START,
|
| + GetVReg(node)));
|
| + }
|
| }
|
|
|
| InstructionOperand UseRegister(Node* node) {
|
| - return Use(node, UnallocatedOperand(UnallocatedOperand::MUST_HAVE_REGISTER,
|
| - UnallocatedOperand::USED_AT_START,
|
| - GetVReg(node)));
|
| + IrOpcode::Value opcode = node->opcode();
|
| + if (opcode == IrOpcode::kLoadFramePointer) {
|
| + return FramePointerOperand();
|
| + } else if (opcode == IrOpcode::kLoadStackPointer) {
|
| + return StackPointerOperand();
|
| + } else {
|
| + return Use(node, UnallocatedOperand(
|
| + UnallocatedOperand::MUST_HAVE_REGISTER,
|
| + UnallocatedOperand::USED_AT_START, GetVReg(node)));
|
| + }
|
| }
|
|
|
| InstructionOperand UseUniqueSlot(Node* node) {
|
|
|