summaryrefslogtreecommitdiffstats
path: root/src/mips
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2012-05-04 10:55:47 +0100
committerBen Murdoch <benm@google.com>2012-05-04 15:14:13 +0100
commit9413bcbe2192ed4d701281130490e0ba336debdc (patch)
treeb1fec0290b2dddfe6f5b1b8f7ea57b57fe7f940e /src/mips
parentdb1b4389239a7132c9cde0915dbd3f775dc1027a (diff)
downloadandroid_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.cc15
-rw-r--r--src/mips/stub-cache-mips.cc2
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);