Skip to content

Commit 6ebe9e0

Browse files
committed
Upgrade V8 to 3.9.24.7
1 parent 304f1fc commit 6ebe9e0

File tree

2 files changed

+38
-21
lines changed

2 files changed

+38
-21
lines changed

deps/v8/src/mips/lithium-codegen-mips.cc

+37-20
Original file line numberDiff line numberDiff line change
@@ -4505,34 +4505,51 @@ void LCodeGen::EmitDeepCopy(Handle<JSObject> object,
45054505
}
45064506

45074507

4508-
// Copy elements backing store header.
4509-
ASSERT(!has_elements || elements->IsFixedArray());
45104508
if (has_elements) {
4509+
// Copy elements backing store header.
45114510
__ LoadHeapObject(source, elements);
45124511
for (int i = 0; i < FixedArray::kHeaderSize; i += kPointerSize) {
45134512
__ lw(a2, FieldMemOperand(source, i));
45144513
__ sw(a2, FieldMemOperand(result, elements_offset + i));
45154514
}
4516-
}
45174515

4518-
// Copy elements backing store content.
4519-
ASSERT(!has_elements || elements->IsFixedArray());
4520-
int elements_length = has_elements ? elements->length() : 0;
4521-
for (int i = 0; i < elements_length; i++) {
4522-
int total_offset = elements_offset + FixedArray::OffsetOfElementAt(i);
4523-
Handle<Object> value = JSObject::GetElement(object, i);
4524-
if (value->IsJSObject()) {
4525-
Handle<JSObject> value_object = Handle<JSObject>::cast(value);
4526-
__ Addu(a2, result, Operand(*offset));
4527-
__ sw(a2, FieldMemOperand(result, total_offset));
4528-
__ LoadHeapObject(source, value_object);
4529-
EmitDeepCopy(value_object, result, source, offset);
4530-
} else if (value->IsHeapObject()) {
4531-
__ LoadHeapObject(a2, Handle<HeapObject>::cast(value));
4532-
__ sw(a2, FieldMemOperand(result, total_offset));
4516+
// Copy elements backing store content.
4517+
int elements_length = has_elements ? elements->length() : 0;
4518+
if (elements->IsFixedDoubleArray()) {
4519+
Handle<FixedDoubleArray> double_array =
4520+
Handle<FixedDoubleArray>::cast(elements);
4521+
for (int i = 0; i < elements_length; i++) {
4522+
int64_t value = double_array->get_representation(i);
4523+
// We only support little endian mode...
4524+
int32_t value_low = value & 0xFFFFFFFF;
4525+
int32_t value_high = value >> 32;
4526+
int total_offset =
4527+
elements_offset + FixedDoubleArray::OffsetOfElementAt(i);
4528+
__ li(a2, Operand(value_low));
4529+
__ sw(a2, FieldMemOperand(result, total_offset));
4530+
__ li(a2, Operand(value_high));
4531+
__ sw(a2, FieldMemOperand(result, total_offset + 4));
4532+
}
4533+
} else if (elements->IsFixedArray()) {
4534+
for (int i = 0; i < elements_length; i++) {
4535+
int total_offset = elements_offset + FixedArray::OffsetOfElementAt(i);
4536+
Handle<Object> value = JSObject::GetElement(object, i);
4537+
if (value->IsJSObject()) {
4538+
Handle<JSObject> value_object = Handle<JSObject>::cast(value);
4539+
__ Addu(a2, result, Operand(*offset));
4540+
__ sw(a2, FieldMemOperand(result, total_offset));
4541+
__ LoadHeapObject(source, value_object);
4542+
EmitDeepCopy(value_object, result, source, offset);
4543+
} else if (value->IsHeapObject()) {
4544+
__ LoadHeapObject(a2, Handle<HeapObject>::cast(value));
4545+
__ sw(a2, FieldMemOperand(result, total_offset));
4546+
} else {
4547+
__ li(a2, Operand(value));
4548+
__ sw(a2, FieldMemOperand(result, total_offset));
4549+
}
4550+
}
45334551
} else {
4534-
__ li(a2, Operand(value));
4535-
__ sw(a2, FieldMemOperand(result, total_offset));
4552+
UNREACHABLE();
45364553
}
45374554
}
45384555
}

deps/v8/src/version.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
#define MAJOR_VERSION 3
3636
#define MINOR_VERSION 9
3737
#define BUILD_NUMBER 24
38-
#define PATCH_LEVEL 6
38+
#define PATCH_LEVEL 7
3939
// Use 1 for candidates and 0 otherwise.
4040
// (Boolean macro values are not supported by all preprocessors.)
4141
#define IS_CANDIDATE_VERSION 0

0 commit comments

Comments
 (0)