diff options
Diffstat (limited to 'deps/v8/src/builtins.cc')
-rw-r--r-- | deps/v8/src/builtins.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/deps/v8/src/builtins.cc b/deps/v8/src/builtins.cc index 1badca7bc5..7290a2cf1c 100644 --- a/deps/v8/src/builtins.cc +++ b/deps/v8/src/builtins.cc @@ -206,8 +206,7 @@ static MaybeObject* ArrayCodeGenericCommon(Arguments* args, } } else { // Allocate the JS Array - MaybeObject* maybe_obj = - heap->AllocateEmptyJSArray(FAST_SMI_ONLY_ELEMENTS); + MaybeObject* maybe_obj = heap->AllocateJSObject(constructor); if (!maybe_obj->To(&array)) return maybe_obj; } @@ -218,12 +217,13 @@ static MaybeObject* ArrayCodeGenericCommon(Arguments* args, if (obj->IsSmi()) { int len = Smi::cast(obj)->value(); if (len >= 0 && len < JSObject::kInitialMaxFastElementArray) { - Object* obj; + Object* fixed_array; { MaybeObject* maybe_obj = heap->AllocateFixedArrayWithHoles(len); - if (!maybe_obj->ToObject(&obj)) return maybe_obj; + if (!maybe_obj->ToObject(&fixed_array)) return maybe_obj; } - MaybeObject* maybe_obj = array->SetContent(FixedArray::cast(obj)); - if (maybe_obj->IsFailure()) return maybe_obj; + // We do not use SetContent to skip the unnecessary elements type check. + array->set_elements(FixedArray::cast(fixed_array)); + array->set_length(Smi::cast(obj)); return array; } } |