 Chromium Code Reviews
 Chromium Code Reviews Issue 16381006:
  Change PC for OSR entries to point to something more sensible (i.e. the first UnknownOsrValue), rem…  (Closed) 
  Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
    
  
    Issue 16381006:
  Change PC for OSR entries to point to something more sensible (i.e. the first UnknownOsrValue), rem…  (Closed) 
  Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge| Index: src/deoptimizer.cc | 
| diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc | 
| index 723d3f692e6b3e45e415534d20d21e1eb977ee03..ea27bc55112b92837f444b34ca142b7993cd30ec 100644 | 
| --- a/src/deoptimizer.cc | 
| +++ b/src/deoptimizer.cc | 
| @@ -787,7 +787,6 @@ void Deoptimizer::DoComputeOutputFrames() { | 
| case Translation::DOUBLE_STACK_SLOT: | 
| case Translation::LITERAL: | 
| case Translation::ARGUMENTS_OBJECT: | 
| - case Translation::DUPLICATE: | 
| default: | 
| UNREACHABLE(); | 
| break; | 
| @@ -1715,14 +1714,8 @@ void Deoptimizer::DoTranslateCommand(TranslationIterator* iterator, | 
| const intptr_t kPlaceholder = reinterpret_cast<intptr_t>(Smi::FromInt(0)); | 
| bool is_native = value_type == TRANSLATED_VALUE_IS_NATIVE; | 
| - // Ignore commands marked as duplicate and act on the first non-duplicate. | 
| Translation::Opcode opcode = | 
| static_cast<Translation::Opcode>(iterator->Next()); | 
| - while (opcode == Translation::DUPLICATE) { | 
| - opcode = static_cast<Translation::Opcode>(iterator->Next()); | 
| - iterator->Skip(Translation::NumberOfOperandsFor(opcode)); | 
| - opcode = static_cast<Translation::Opcode>(iterator->Next()); | 
| - } | 
| switch (opcode) { | 
| case Translation::BEGIN: | 
| @@ -1732,9 +1725,6 @@ void Deoptimizer::DoTranslateCommand(TranslationIterator* iterator, | 
| case Translation::GETTER_STUB_FRAME: | 
| case Translation::SETTER_STUB_FRAME: | 
| case Translation::COMPILED_STUB_FRAME: | 
| - case Translation::DUPLICATE: | 
| - UNREACHABLE(); | 
| 
Michael Starzinger
2013/06/11 17:24:07
Don't remove the unreachable assertion, other case
 
titzer
2013/06/12 09:30:04
Done.
 | 
| - return; | 
| case Translation::REGISTER: { | 
| int input_reg = iterator->Next(); | 
| @@ -1998,10 +1988,6 @@ bool Deoptimizer::DoOsrTranslateCommand(TranslationIterator* iterator, | 
| Translation::Opcode opcode = | 
| static_cast<Translation::Opcode>(iterator->Next()); | 
| - bool duplicate = (opcode == Translation::DUPLICATE); | 
| - if (duplicate) { | 
| - opcode = static_cast<Translation::Opcode>(iterator->Next()); | 
| - } | 
| switch (opcode) { | 
| case Translation::BEGIN: | 
| @@ -2011,9 +1997,6 @@ bool Deoptimizer::DoOsrTranslateCommand(TranslationIterator* iterator, | 
| case Translation::GETTER_STUB_FRAME: | 
| case Translation::SETTER_STUB_FRAME: | 
| case Translation::COMPILED_STUB_FRAME: | 
| - case Translation::DUPLICATE: | 
| - UNREACHABLE(); // Malformed input. | 
| 
Michael Starzinger
2013/06/11 17:24:07
Don't remove the unreachable assertion, other case
 
titzer
2013/06/12 09:30:04
Done.
 | 
| - return false; | 
| case Translation::REGISTER: { | 
| int output_reg = iterator->Next(); | 
| @@ -2170,7 +2153,7 @@ bool Deoptimizer::DoOsrTranslateCommand(TranslationIterator* iterator, | 
| } | 
| } | 
| - if (!duplicate) *input_offset -= kPointerSize; | 
| + *input_offset -= kPointerSize; | 
| return true; | 
| } | 
| @@ -2620,15 +2603,8 @@ void Translation::StoreArgumentsObject(bool args_known, | 
| } | 
| -void Translation::MarkDuplicate() { | 
| - buffer_->Add(DUPLICATE, zone()); | 
| -} | 
| - | 
| - | 
| int Translation::NumberOfOperandsFor(Opcode opcode) { | 
| switch (opcode) { | 
| - case DUPLICATE: | 
| - return 0; | 
| case GETTER_STUB_FRAME: | 
| case SETTER_STUB_FRAME: | 
| case REGISTER: | 
| @@ -2693,8 +2669,6 @@ const char* Translation::StringFor(Opcode opcode) { | 
| return "LITERAL"; | 
| case ARGUMENTS_OBJECT: | 
| return "ARGUMENTS_OBJECT"; | 
| - case DUPLICATE: | 
| - return "DUPLICATE"; | 
| } | 
| UNREACHABLE(); | 
| return ""; | 
| @@ -2746,7 +2720,6 @@ SlotRef SlotRef::ComputeSlotForNextArgument(TranslationIterator* iterator, | 
| case Translation::INT32_REGISTER: | 
| case Translation::UINT32_REGISTER: | 
| case Translation::DOUBLE_REGISTER: | 
| - case Translation::DUPLICATE: | 
| // We are at safepoint which corresponds to call. All registers are | 
| // saved by caller so there would be no live registers at this | 
| // point. Thus these translation commands should not be used. |