Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Issue 1409123003: [runtime] Avoid @@isConcatSpreadable lookup for fast path Array.prototype.concat (Closed)

Created:
5 years, 2 months ago by Camillo Bruni
Modified:
4 years, 7 months ago
Reviewers:
ulan, Toon Verwaest
CC:
adamk, Dan Ehrenberg, v8-reviews_googlegroups.com
Base URL:
https://chromium.googlesource.com/v8/v8.git@master
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

[runtime] Avoid @@isConcatSpreadable lookup for fast path Array.prototype.concat Currently we do not check for @@isConcatSpreadable properly. If the Symbol is set on the Array.prototype or Object.prototype the current fast paths fail. This CL adds a fix to globally invalidate a isConcatSpreadable_protector. Drive-by-fix: use named accessors for context variables LOG=N BUG=chromium:542504, v8:903 Committed: https://crrev.com/f87014ebdefc759ff58b7c9557c417e0f57749ba Cr-Commit-Position: refs/heads/master@{#36201}

Patch Set 1 #

Patch Set 2 : test for @@isConcatSpreadable==False #

Patch Set 3 : cleanups #

Patch Set 4 : ugly patch No1 #

Patch Set 5 : fixing tests #

Patch Set 6 : simplifications #

Total comments: 10

Patch Set 7 : nit termination #

Patch Set 8 : resolving spurious merge conflicts #

Patch Set 9 : fixing lost merge artifacts #

Patch Set 10 : merging #

Patch Set 11 : species speedup #

Patch Set 12 : fixing checks #

Patch Set 13 : avoid side-effects #

Patch Set 14 : cleanup #

Patch Set 15 : merging with master #

Total comments: 10

Patch Set 16 : cleanup #

Patch Set 17 : more cleanup #

Patch Set 18 : cleanups #

Patch Set 19 : adding more tests #

Total comments: 3

Patch Set 20 : cleanup #

Patch Set 21 : merge with master #

Patch Set 22 : lost in merge #

Patch Set 23 : compiling locally is hard #

Patch Set 24 : fixing tests #

Total comments: 2

Patch Set 25 : renaming #

Patch Set 26 : allow heap allocation for throwing RangeError #

Patch Set 27 : more checks #

Patch Set 28 : merging with master #

Patch Set 29 : fixing merge conflicts #

Patch Set 30 : reverting accidental changes #

Patch Set 31 : merging with master #

Unified diffs Side-by-side diffs Delta from patch set Stats (+500 lines, -131 lines) Patch
M src/bootstrapper.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 chunk +2 lines, -2 lines 0 comments Download
M src/builtins.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 4 chunks +32 lines, -21 lines 0 comments Download
M src/context-measure.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +1 line, -1 line 0 comments Download
M src/contexts.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 chunk +2 lines, -0 lines 0 comments Download
M src/contexts.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 1 chunk +1 line, -1 line 0 comments Download
M src/contexts-inl.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +1 line, -0 lines 0 comments Download
M src/crankshaft/ia32/lithium-codegen-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 chunk +3 lines, -3 lines 0 comments Download
M src/crankshaft/x87/lithium-codegen-x87.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 chunk +3 lines, -3 lines 0 comments Download
M src/deoptimizer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 4 chunks +4 lines, -4 lines 0 comments Download
M src/elements.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 chunk +1 line, -1 line 0 comments Download
M src/elements.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 chunk +5 lines, -19 lines 0 comments Download
M src/heap/heap.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 chunk +2 lines, -1 line 0 comments Download
M src/heap/heap.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 chunks +7 lines, -3 lines 0 comments Download
M src/heap/incremental-marking.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 1 chunk +1 line, -1 line 0 comments Download
M src/heap/objects-visiting.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 1 chunk +1 line, -1 line 0 comments Download
M src/isolate.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 4 chunks +6 lines, -1 line 0 comments Download
M src/isolate.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 2 chunks +74 lines, -38 lines 0 comments Download
M src/isolate-inl.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 chunk +1 line, -1 line 0 comments Download
M src/lookup.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 chunks +4 lines, -5 lines 0 comments Download
M src/lookup.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1 chunk +9 lines, -17 lines 0 comments Download
M src/objects.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 7 chunks +5 lines, -4 lines 0 comments Download
M test/cctest/heap/test-heap.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 2 chunks +2 lines, -3 lines 0 comments Download
M test/mjsunit/es6/array-concat.js View 1 2 3 4 5 6 7 8 9 2 chunks +9 lines, -1 line 0 comments Download
A test/mjsunit/harmony/array-concat-array-proto.js View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +48 lines, -0 lines 0 comments Download
A test/mjsunit/harmony/array-concat-array-proto-getter.js View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 chunk +53 lines, -0 lines 0 comments Download
A test/mjsunit/harmony/array-concat-object-proto.js View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +48 lines, -0 lines 0 comments Download
A test/mjsunit/harmony/array-concat-object-proto-dict.js View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +53 lines, -0 lines 0 comments Download
A test/mjsunit/harmony/array-concat-object-proto-dict-getter.js View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 1 chunk +57 lines, -0 lines 0 comments Download
A test/mjsunit/harmony/array-concat-object-proto-generic-dict.js View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +65 lines, -0 lines 0 comments Download

Messages

Total messages: 99 (47 generated)
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/1 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/1
5 years, 2 months ago (2015-10-23 12:38:33 UTC) #2
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: v8_linux_rel on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_rel/builds/10916)
5 years, 2 months ago (2015-10-23 12:49:47 UTC) #4
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/90001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/90001
5 years, 1 month ago (2015-10-26 16:03:19 UTC) #6
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
5 years, 1 month ago (2015-10-26 16:57:38 UTC) #8
Camillo Bruni
PTAL
5 years, 1 month ago (2015-10-27 14:29:07 UTC) #10
adamk
Can you expand on this CL description to make it clear that you're properly handling ...
5 years, 1 month ago (2015-10-28 00:03:52 UTC) #12
Camillo Bruni
On 2015/10/28 at 00:03:52, adamk wrote: > Can you expand on this CL description to ...
5 years, 1 month ago (2015-10-28 09:16:26 UTC) #13
Toon Verwaest
Some minor comments. https://codereview.chromium.org/1409123003/diff/90001/src/isolate.cc File src/isolate.cc (right): https://codereview.chromium.org/1409123003/diff/90001/src/isolate.cc#newcode2470 src/isolate.cc:2470: if (maybeValue.ToHandle(&value) && !value->IsUndefined()) { Plus ...
5 years, 1 month ago (2015-11-02 12:32:46 UTC) #14
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/110001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/110001
5 years, 1 month ago (2015-11-03 10:31:24 UTC) #16
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: v8_linux_arm_rel on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_arm_rel/builds/9723) v8_linux_gcc_compile_rel on ...
5 years, 1 month ago (2015-11-03 10:32:27 UTC) #18
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/50002 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/50002
5 years, 1 month ago (2015-11-03 13:01:24 UTC) #21
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: v8_linux64_asan_rel on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_asan_rel/builds/9678) v8_win_rel on ...
5 years, 1 month ago (2015-11-03 13:12:54 UTC) #23
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/140001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/140001
5 years, 1 month ago (2015-11-03 13:45:53 UTC) #25
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
5 years, 1 month ago (2015-11-03 14:16:04 UTC) #27
Camillo Bruni
PTAL addressed all but one comment. https://codereview.chromium.org/1409123003/diff/90001/src/isolate.cc File src/isolate.cc (right): https://codereview.chromium.org/1409123003/diff/90001/src/isolate.cc#newcode2470 src/isolate.cc:2470: if (maybeValue.ToHandle(&value) && ...
5 years, 1 month ago (2015-11-03 14:49:25 UTC) #28
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/240001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/240001
4 years, 9 months ago (2016-03-23 13:39:37 UTC) #30
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: v8_linux64_asan_rel on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_asan_rel/builds/15716)
4 years, 9 months ago (2016-03-23 14:08:05 UTC) #32
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/260001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/260001
4 years, 8 months ago (2016-03-29 16:04:17 UTC) #34
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
4 years, 8 months ago (2016-03-29 16:28:48 UTC) #36
Camillo Bruni
PTAL
4 years, 8 months ago (2016-03-30 09:21:34 UTC) #37
adamk
Look forward to seeing this land, but Toon is definitely the reviewer you want.
4 years, 8 months ago (2016-03-30 16:56:11 UTC) #39
Toon Verwaest
Sorry for slowpoking. Here you go. https://codereview.chromium.org/1409123003/diff/260001/src/builtins.cc File src/builtins.cc (right): https://codereview.chromium.org/1409123003/diff/260001/src/builtins.cc#newcode1415 src/builtins.cc:1415: map->prototype() == *isolate->initial_array_prototype()) ...
4 years, 8 months ago (2016-03-31 08:09:46 UTC) #40
Toon Verwaest
https://codereview.chromium.org/1409123003/diff/340001/src/isolate.cc File src/isolate.cc (right): https://codereview.chromium.org/1409123003/diff/340001/src/isolate.cc#newcode2489 src/isolate.cc:2489: bool Isolate::ArrayOrObjectPrototypeIsInContext(Object* object) { IsArrayOrObjectPrototype https://codereview.chromium.org/1409123003/diff/340001/src/isolate.cc#newcode2608 src/isolate.cc:2608: MaybeHandle<Object> maybe_value ...
4 years, 8 months ago (2016-04-05 12:57:26 UTC) #41
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/360001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/360001
4 years, 8 months ago (2016-04-06 09:13:24 UTC) #43
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: v8_linux_dbg_ng on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_dbg_ng/builds/3858)
4 years, 8 months ago (2016-04-06 09:16:55 UTC) #45
Camillo Bruni
PTAL again. ulan@ please have a look at heap/* https://codereview.chromium.org/1409123003/diff/260001/src/heap/heap.cc File src/heap/heap.cc (right): https://codereview.chromium.org/1409123003/diff/260001/src/heap/heap.cc#newcode2912 src/heap/heap.cc:2912: ...
4 years, 8 months ago (2016-04-06 13:14:32 UTC) #47
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/400001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/400001
4 years, 8 months ago (2016-04-06 13:14:42 UTC) #49
ulan
heap lgtm
4 years, 8 months ago (2016-04-06 13:17:21 UTC) #50
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: v8_win_compile_dbg on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_win_compile_dbg/builds/15651)
4 years, 8 months ago (2016-04-06 13:24:35 UTC) #52
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/420001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/420001
4 years, 8 months ago (2016-04-06 13:36:06 UTC) #54
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: v8_android_arm_compile_rel on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_android_arm_compile_rel/builds/15835) v8_linux64_avx2_rel on ...
4 years, 8 months ago (2016-04-06 13:44:58 UTC) #56
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/420001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/420001
4 years, 8 months ago (2016-04-06 13:53:06 UTC) #58
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: v8_mac_rel on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_mac_rel/builds/18025)
4 years, 8 months ago (2016-04-06 14:09:41 UTC) #60
Toon Verwaest
Getting there :) https://codereview.chromium.org/1409123003/diff/440001/src/builtins.cc File src/builtins.cc (right): https://codereview.chromium.org/1409123003/diff/440001/src/builtins.cc#newcode1334 src/builtins.cc:1334: if (!isolate->IsArrayIsConcatSpreadableLookupChainIntact()) { This only guarantees ...
4 years, 8 months ago (2016-04-11 09:30:56 UTC) #62
Camillo Bruni
https://codereview.chromium.org/1409123003/diff/440001/src/builtins.cc File src/builtins.cc (right): https://codereview.chromium.org/1409123003/diff/440001/src/builtins.cc#newcode1334 src/builtins.cc:1334: if (!isolate->IsArrayIsConcatSpreadableLookupChainIntact()) { On 2016/04/11 at 09:30:56, Toon Verwaest ...
4 years, 8 months ago (2016-04-11 11:55:12 UTC) #63
Toon Verwaest
Ok in that case just change the name
4 years, 8 months ago (2016-04-13 14:26:54 UTC) #64
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/460001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/460001
4 years, 8 months ago (2016-04-15 09:32:20 UTC) #68
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: v8_win_nosnap_shared_rel_ng on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_win_nosnap_shared_rel_ng/builds/283) v8_win_nosnap_shared_rel_ng_triggered on ...
4 years, 8 months ago (2016-04-15 09:49:00 UTC) #70
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/480001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/480001
4 years, 8 months ago (2016-04-15 11:36:47 UTC) #72
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: v8_linux64_avx2_rel_ng on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_avx2_rel_ng/builds/208) v8_linux64_avx2_rel_ng_triggered on ...
4 years, 8 months ago (2016-04-15 11:52:38 UTC) #74
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/500001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/500001
4 years, 8 months ago (2016-04-15 13:50:34 UTC) #76
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
4 years, 8 months ago (2016-04-15 14:23:08 UTC) #78
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/560001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/560001
4 years, 7 months ago (2016-05-06 10:48:56 UTC) #81
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
4 years, 7 months ago (2016-05-06 11:19:51 UTC) #83
Toon Verwaest
lgtm
4 years, 7 months ago (2016-05-11 13:01:02 UTC) #84
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/560001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/560001
4 years, 7 months ago (2016-05-11 13:02:21 UTC) #87
commit-bot: I haz the power
Try jobs failed on following builders: v8_linux64_rel_ng on tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_rel_ng/builds/5602) v8_linux_mips64el_compile_rel on tryserver.v8 (JOB_FAILED, ...
4 years, 7 months ago (2016-05-11 13:03:55 UTC) #89
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/580001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/580001
4 years, 7 months ago (2016-05-11 13:44:53 UTC) #92
commit-bot: I haz the power
Try jobs failed on following builders: v8_linux_arm_rel_ng on tryserver.v8 (JOB_TIMED_OUT, no build URL)
4 years, 7 months ago (2016-05-11 15:45:26 UTC) #94
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1409123003/580001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1409123003/580001
4 years, 7 months ago (2016-05-12 08:27:33 UTC) #96
commit-bot: I haz the power
Committed patchset #31 (id:580001)
4 years, 7 months ago (2016-05-12 08:50:27 UTC) #97
commit-bot: I haz the power
4 years, 7 months ago (2016-05-12 08:52:47 UTC) #99
Message was sent while issue was closed.
Patchset 31 (id:??) landed as
https://crrev.com/f87014ebdefc759ff58b7c9557c417e0f57749ba
Cr-Commit-Position: refs/heads/master@{#36201}

Powered by Google App Engine
This is Rietveld 408576698