diff options
| author | Ben Murdoch <benm@google.com> | 2012-05-04 10:55:47 +0100 |
|---|---|---|
| committer | Ben Murdoch <benm@google.com> | 2012-05-04 15:14:13 +0100 |
| commit | 9413bcbe2192ed4d701281130490e0ba336debdc (patch) | |
| tree | b1fec0290b2dddfe6f5b1b8f7ea57b57fe7f940e /src/mips | |
| parent | db1b4389239a7132c9cde0915dbd3f775dc1027a (diff) | |
| download | android_external_v8-9413bcbe2192ed4d701281130490e0ba336debdc.tar.gz android_external_v8-9413bcbe2192ed4d701281130490e0ba336debdc.tar.bz2 android_external_v8-9413bcbe2192ed4d701281130490e0ba336debdc.zip | |
Merge V8 at 3.9.24.21
Bug: 5688872
Change-Id: I8c6370d6e881d372b602527bf6c02994e0165515
Diffstat (limited to 'src/mips')
| -rw-r--r-- | src/mips/deoptimizer-mips.cc | 15 | ||||
| -rw-r--r-- | src/mips/stub-cache-mips.cc | 2 |
2 files changed, 14 insertions, 3 deletions
diff --git a/src/mips/deoptimizer-mips.cc b/src/mips/deoptimizer-mips.cc index 51c2e467..62f3155e 100644 --- a/src/mips/deoptimizer-mips.cc +++ b/src/mips/deoptimizer-mips.cc @@ -447,6 +447,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; @@ -454,7 +456,7 @@ void Deoptimizer::DoComputeConstructStubFrame(TranslationIterator* iterator, PrintF(" translating construct stub => height=%d\n", height_in_bytes); } - unsigned fixed_frame_size = 7 * kPointerSize; + unsigned fixed_frame_size = 8 * kPointerSize; unsigned output_frame_size = height_in_bytes + fixed_frame_size; // Allocate and store the output frame description. @@ -519,6 +521,15 @@ 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%08x: [top + %d] <- 0x%08x ; code object\n", + top_address + output_offset, output_offset, value); + } + // Number of incoming arguments. output_offset -= kPointerSize; value = reinterpret_cast<uint32_t>(Smi::FromInt(height - 1)); @@ -549,8 +560,6 @@ void Deoptimizer::DoComputeConstructStubFrame(TranslationIterator* iterator, ASSERT(0 == output_offset); - Builtins* builtins = isolate_->builtins(); - Code* construct_stub = builtins->builtin(Builtins::kJSConstructStubGeneric); uint32_t pc = reinterpret_cast<uint32_t>( construct_stub->instruction_start() + isolate_->heap()->construct_stub_deopt_pc_offset()->value()); diff --git a/src/mips/stub-cache-mips.cc b/src/mips/stub-cache-mips.cc index f7b94b92..f1a8c89f 100644 --- a/src/mips/stub-cache-mips.cc +++ b/src/mips/stub-cache-mips.cc @@ -4494,6 +4494,8 @@ void KeyedStoreStubCompiler::GenerateStoreFastDoubleElement( // Increment the length of the array. __ li(length_reg, Operand(Smi::FromInt(1))); __ sw(length_reg, FieldMemOperand(receiver_reg, JSArray::kLengthOffset)); + __ lw(elements_reg, + FieldMemOperand(receiver_reg, JSObject::kElementsOffset)); __ jmp(&finish_store); __ bind(&check_capacity); |
