Index: src/deoptimizer.cc |
diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc |
index c14ae991225ea9d2c2cef9b396559164de6dd5b9..8aeee1ad212b2e8607f58ec15440c0b4065e6b31 100644 |
--- a/src/deoptimizer.cc |
+++ b/src/deoptimizer.cc |
@@ -589,7 +589,19 @@ void Deoptimizer::DoComputeOutputFrames() { |
case Translation::CONSTRUCT_STUB_FRAME: |
DoComputeConstructStubFrame(&iterator, i); |
break; |
- default: |
+ case Translation::SETTER_STUB_FRAME: |
+ DoComputeSetterStubFrame(&iterator, i); |
+ break; |
+ case Translation::BEGIN: |
+ case Translation::REGISTER: |
+ case Translation::INT32_REGISTER: |
+ case Translation::DOUBLE_REGISTER: |
+ case Translation::STACK_SLOT: |
+ case Translation::INT32_STACK_SLOT: |
+ case Translation::DOUBLE_STACK_SLOT: |
+ case Translation::LITERAL: |
+ case Translation::ARGUMENTS_OBJECT: |
+ case Translation::DUPLICATE: |
UNREACHABLE(); |
break; |
} |
@@ -708,6 +720,7 @@ void Deoptimizer::DoTranslateCommand(TranslationIterator* iterator, |
case Translation::JS_FRAME: |
case Translation::ARGUMENTS_ADAPTOR_FRAME: |
case Translation::CONSTRUCT_STUB_FRAME: |
+ case Translation::SETTER_STUB_FRAME: |
case Translation::DUPLICATE: |
UNREACHABLE(); |
return; |
@@ -895,6 +908,7 @@ bool Deoptimizer::DoOsrTranslateCommand(TranslationIterator* iterator, |
case Translation::JS_FRAME: |
case Translation::ARGUMENTS_ADAPTOR_FRAME: |
case Translation::CONSTRUCT_STUB_FRAME: |
+ case Translation::SETTER_STUB_FRAME: |
case Translation::DUPLICATE: |
UNREACHABLE(); // Malformed input. |
return false; |
@@ -1350,6 +1364,12 @@ void Translation::BeginConstructStubFrame(int literal_id, unsigned height) { |
} |
+void Translation::BeginSetterStubFrame(int literal_id) { |
+ buffer_->Add(SETTER_STUB_FRAME, zone()); |
+ buffer_->Add(literal_id, zone()); |
+} |
+ |
+ |
void Translation::BeginArgumentsAdaptorFrame(int literal_id, unsigned height) { |
buffer_->Add(ARGUMENTS_ADAPTOR_FRAME, zone()); |
buffer_->Add(literal_id, zone()); |
@@ -1424,6 +1444,7 @@ int Translation::NumberOfOperandsFor(Opcode opcode) { |
case ARGUMENTS_OBJECT: |
case DUPLICATE: |
return 0; |
+ case SETTER_STUB_FRAME: |
case REGISTER: |
case INT32_REGISTER: |
case DOUBLE_REGISTER: |
@@ -1456,6 +1477,8 @@ const char* Translation::StringFor(Opcode opcode) { |
return "ARGUMENTS_ADAPTOR_FRAME"; |
case CONSTRUCT_STUB_FRAME: |
return "CONSTRUCT_STUB_FRAME"; |
+ case SETTER_STUB_FRAME: |
+ return "SETTER_STUB_FRAME"; |
case REGISTER: |
return "REGISTER"; |
case INT32_REGISTER: |
@@ -1512,6 +1535,7 @@ SlotRef SlotRef::ComputeSlotForNextArgument(TranslationIterator* iterator, |
case Translation::JS_FRAME: |
case Translation::ARGUMENTS_ADAPTOR_FRAME: |
case Translation::CONSTRUCT_STUB_FRAME: |
+ case Translation::SETTER_STUB_FRAME: |
// Peeled off before getting here. |
break; |