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()) |