ff9ba741db
This CL allows ExtractFixedArray to know if the JSArray has only Smi elements. In that case ExtractFixedArray will always skip write barriers when copying the Smi-only backing store. In the case that the copying is not possibly conflicting with the concurrent marker, CopyElements will efficiently use memcpy for further performance. This improves the performance of ExtractFastJSArray and CloneFastJSArray. As a result, performance of copying Smi arrays by slice() and spreading is improved, except for spreading Smi holey arrays. Bug: v8:7980 Change-Id: Ie39f8abf3b5039cc12a8ca7ece81352375e0e9da Reviewed-on: https://chromium-review.googlesource.com/c/1286340 Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Commit-Queue: Hai Dang <dhai@google.com> Cr-Commit-Position: refs/heads/master@{#56989}
18 lines
500 B
JavaScript
18 lines
500 B
JavaScript
// Copyright 2018 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Test spreading of large holey arrays, which are supposedly allocated in
|
|
// LargeObjectSpace. Holes should be replaced with undefined.
|
|
|
|
var arr = new Array(2e5);
|
|
|
|
for (var i = 0; i < 10; i++) {
|
|
arr[i] = i;
|
|
}
|
|
|
|
var arr2 = [...arr];
|
|
assertTrue(arr2.hasOwnProperty(10));
|
|
assertEquals(undefined, arr2[10]);
|
|
assertEquals(9, arr2[9]);
|