| Index: src/compiler/instruction-selector.cc
|
| diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc
|
| index f987248bead41d33f3acf4146703ed11daa3ebaf..4b07194c87be3b195062f35afb2a9b4b9b95ec8d 100644
|
| --- a/src/compiler/instruction-selector.cc
|
| +++ b/src/compiler/instruction-selector.cc
|
| @@ -543,6 +543,8 @@ MachineType InstructionSelector::GetMachineType(Node* node) {
|
| return kMachAnyTagged;
|
| case IrOpcode::kParameter:
|
| return linkage()->GetParameterType(OpParameter<int>(node));
|
| + case IrOpcode::kOsrValue:
|
| + return kMachAnyTagged;
|
| case IrOpcode::kPhi:
|
| return OpParameter<MachineType>(node);
|
| case IrOpcode::kProjection:
|
| @@ -681,6 +683,8 @@ void InstructionSelector::VisitNode(Node* node) {
|
| MarkAsRepresentation(type, node);
|
| return VisitParameter(node);
|
| }
|
| + case IrOpcode::kOsrValue:
|
| + return MarkAsReference(node), VisitOsrValue(node);
|
| case IrOpcode::kPhi: {
|
| MachineType type = OpParameter<MachineType>(node);
|
| MarkAsRepresentation(type, node);
|
| @@ -965,6 +969,14 @@ void InstructionSelector::VisitParameter(Node* node) {
|
| }
|
|
|
|
|
| +void InstructionSelector::VisitOsrValue(Node* node) {
|
| + OperandGenerator g(this);
|
| + int index = OpParameter<int>(node);
|
| + Emit(kArchNop, g.DefineAsLocation(node, linkage()->GetOsrValueLocation(index),
|
| + kMachAnyTagged));
|
| +}
|
| +
|
| +
|
| void InstructionSelector::VisitPhi(Node* node) {
|
| const int input_count = node->op()->ValueInputCount();
|
| PhiInstruction* phi = new (instruction_zone())
|
|
|