Chromium Code Reviews| Index: src/a64/lithium-a64.cc |
| diff --git a/src/a64/lithium-a64.cc b/src/a64/lithium-a64.cc |
| index a2071a2608aa1a18ed9889b0e28934ca22fa0033..8313759164ceddf1f2385dd78e5b816342d0b965 100644 |
| --- a/src/a64/lithium-a64.cc |
| +++ b/src/a64/lithium-a64.cc |
| @@ -1871,7 +1871,10 @@ LInstruction* LChunkBuilder::DoNumericConstraint(HNumericConstraint* instr) { |
| LInstruction* LChunkBuilder::DoOsrEntry(HOsrEntry* instr) { |
| - UNIMPLEMENTED_INSTRUCTION(); |
| + ASSERT(argument_count_ == 0); |
| + allocator_->MarkAsOsrEntry(); |
| + current_block_->last_environment()->set_ast_id(instr->ast_id()); |
| + return AssignEnvironment(new(zone()) LOsrEntry); |
| } |
| @@ -2450,7 +2453,12 @@ LInstruction* LChunkBuilder::DoUnaryMathOperation(HUnaryMathOperation* instr) { |
| LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) { |
| - UNIMPLEMENTED_INSTRUCTION(); |
| + int spill_index = chunk_->GetNextSpillIndex(); |
| + if (spill_index > LUnallocated::kMaxFixedSlotIndex) { |
| + Abort("Too many spill slots needed for OSR"); |
| + spill_index = 0; |
| + } |
|
titzer
2014/01/24 17:04:32
You will need to define these OSR values in exactl
|
| + return DefineAsSpilled(new(zone()) LUnknownOSRValue, spill_index); |
| } |