Chromium Code Reviews

Side by Side Diff: test/mjsunit/harmony/array-concat-array-proto.js

Issue 1409123003: [runtime] Avoid @@isConcatSpreadable lookup for fast path Array.prototype.concat (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: merging with master Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
(Empty)
1 // Copyright 2014 the V8 project authors. All rights reserved.
Toon Verwaest 2016/03/31 08:09:46 http://s2.quickmeme.com/img/98/98b39b21ff008afaa5c
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Check that @@isConcatSpreadable is checked when set on Object.prototype
6
7 "use strict"
8
9 var array = [1, 2, 3];
10 var object = {length: 1, '0': 'a'};
11
12 assertEquals(array, [].concat(array));
13 assertEquals(array, array.concat([]));
14 assertEquals([1, 2, 3, 1, 2, 3], array.concat(array));
15 assertEquals([object], [].concat(object));
16 assertEquals([1, 2, 3, object], array.concat(object));
17 assertEquals([object], Array.prototype.concat.call(object,[]));
18 assertEquals([object, 1, 2, 3], Array.prototype.concat.call(object, array));
19 assertEquals([object, object], Array.prototype.concat.call(object, object));
20
21 Array.prototype[Symbol.isConcatSpreadable] = false;
22
23 assertEquals([[], array], [].concat(array));
24 assertEquals([array, []], array.concat([]));
25 assertEquals([array, array], array.concat(array));
26 assertEquals([[], object], [].concat(object));
27 assertEquals([array, object], array.concat(object));
28 assertEquals([object, []], Array.prototype.concat.call(object,[]));
29 assertEquals([object, array], Array.prototype.concat.call(object, array));
30 assertEquals([object, object], Array.prototype.concat.call(object, object));
31
32 Array.prototype[Symbol.isConcatSpreadable] = true;
33
34 assertEquals(array, [].concat(array));
35 assertEquals(array, array.concat([]));
36 assertEquals([1, 2, 3, 1, 2, 3], array.concat(array));
37 assertEquals([object], [].concat(object));
38 assertEquals([1, 2, 3, object], array.concat(object));
39 assertEquals([object], Array.prototype.concat.call(object,[]));
40 assertEquals([object, 1, 2, 3], Array.prototype.concat.call(object, array));
41 assertEquals([object, object], Array.prototype.concat.call(object, object));
OLDNEW

Powered by Google App Engine