| Index: src/x64/deoptimizer-x64.cc
|
| diff --git a/src/x64/deoptimizer-x64.cc b/src/x64/deoptimizer-x64.cc
|
| index 40b9a1cce1a2a35d20b7ea0d1bd64ad5753fff14..f3046b9ce3a5f75c50223bb1200975e6b62b8c53 100644
|
| --- a/src/x64/deoptimizer-x64.cc
|
| +++ b/src/x64/deoptimizer-x64.cc
|
| @@ -458,6 +458,8 @@ void Deoptimizer::DoComputeArgumentsAdaptorFrame(TranslationIterator* iterator,
|
|
|
| void Deoptimizer::DoComputeConstructStubFrame(TranslationIterator* iterator,
|
| int frame_index) {
|
| + Builtins* builtins = isolate_->builtins();
|
| + Code* construct_stub = builtins->builtin(Builtins::kJSConstructStubGeneric);
|
| JSFunction* function = JSFunction::cast(ComputeLiteral(iterator->Next()));
|
| unsigned height = iterator->Next();
|
| unsigned height_in_bytes = height * kPointerSize;
|
| @@ -465,7 +467,7 @@ void Deoptimizer::DoComputeConstructStubFrame(TranslationIterator* iterator,
|
| PrintF(" translating construct stub => height=%d\n", height_in_bytes);
|
| }
|
|
|
| - unsigned fixed_frame_size = 6 * kPointerSize;
|
| + unsigned fixed_frame_size = 7 * kPointerSize;
|
| unsigned output_frame_size = height_in_bytes + fixed_frame_size;
|
|
|
| // Allocate and store the output frame description.
|
| @@ -534,6 +536,16 @@ void Deoptimizer::DoComputeConstructStubFrame(TranslationIterator* iterator,
|
| top_address + output_offset, output_offset, value);
|
| }
|
|
|
| + // The output frame reflects a JSConstructStubGeneric frame.
|
| + output_offset -= kPointerSize;
|
| + value = reinterpret_cast<intptr_t>(construct_stub);
|
| + output_frame->SetFrameSlot(output_offset, value);
|
| + if (FLAG_trace_deopt) {
|
| + PrintF(" 0x%08" V8PRIxPTR ": [top + %d] <- 0x%08"
|
| + V8PRIxPTR " ; code object\n",
|
| + top_address + output_offset, output_offset, value);
|
| + }
|
| +
|
| // Number of incoming arguments.
|
| output_offset -= kPointerSize;
|
| value = reinterpret_cast<intptr_t>(Smi::FromInt(height - 1));
|
| @@ -557,8 +569,6 @@ void Deoptimizer::DoComputeConstructStubFrame(TranslationIterator* iterator,
|
|
|
| ASSERT(0 == output_offset);
|
|
|
| - Builtins* builtins = isolate_->builtins();
|
| - Code* construct_stub = builtins->builtin(Builtins::kJSConstructStubGeneric);
|
| intptr_t pc = reinterpret_cast<intptr_t>(
|
| construct_stub->instruction_start() +
|
| isolate_->heap()->construct_stub_deopt_pc_offset()->value());
|
|
|