| Index: src/compiler/instruction-selector.cc | 
| diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc | 
| index a91b7db12689f665e9884601dbbe36a5c61f3487..840b75a5588208a45dd0cec090801ca395497189 100644 | 
| --- a/src/compiler/instruction-selector.cc | 
| +++ b/src/compiler/instruction-selector.cc | 
| @@ -457,6 +457,7 @@ void InstructionSelector::VisitBlock(BasicBlock* block) { | 
| // up". | 
| size_t current_node_end = instructions_.size(); | 
| VisitNode(node); | 
| +    // TODO(turbofan): only reverse if > 1 instruction emitted. | 
| std::reverse(instructions_.begin() + current_node_end, instructions_.end()); | 
| } | 
|  | 
| @@ -536,6 +537,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: | 
| @@ -674,6 +677,8 @@ void InstructionSelector::VisitNode(Node* node) { | 
| MarkAsRepresentation(type, node); | 
| return VisitParameter(node); | 
| } | 
| +    case IrOpcode::kOsrValue: | 
| +      return VisitOsrValue(node); | 
| case IrOpcode::kPhi: { | 
| MachineType type = OpParameter<MachineType>(node); | 
| MarkAsRepresentation(type, node); | 
| @@ -958,6 +963,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()) | 
|  |