| Index: src/deoptimizer.cc
|
| diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc
|
| index 6b381dade9f84080493b10b15efdb5bbf8da8ebc..e874122e133703715d1e5d7af654def060a2775a 100644
|
| --- a/src/deoptimizer.cc
|
| +++ b/src/deoptimizer.cc
|
| @@ -1067,6 +1067,18 @@ void Deoptimizer::DoComputeJSFrame(TranslationIterator* iterator,
|
| // The context should not be a placeholder for a materialized object.
|
| CHECK(value !=
|
| reinterpret_cast<intptr_t>(isolate_->heap()->arguments_marker()));
|
| + if (value ==
|
| + reinterpret_cast<intptr_t>(isolate_->heap()->undefined_value())) {
|
| + // If the context was optimized away, just use the context from
|
| + // the activation. This should only apply to Crankshaft code.
|
| + CHECK(!compiled_code_->is_turbofanned());
|
| + if (is_bottommost) {
|
| + value = input_->GetFrameSlot(input_offset);
|
| + } else {
|
| + value = reinterpret_cast<intptr_t>(function->context());
|
| + }
|
| + output_frame->SetFrameSlot(output_offset, value);
|
| + }
|
| output_frame->SetContext(value);
|
| if (is_topmost) output_frame->SetRegister(context_reg.code(), value);
|
| if (trace_scope_ != NULL) {
|
|
|