| 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;
|
|
|
|
|