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

Issue 2549773002: Internalize strings in-place (Closed)

Created:
4 years ago by Jakob Kummerow
Modified:
3 years, 11 months ago
CC:
v8-reviews_googlegroups.com, Hannes Payer (out of office), ulan, v8-x87-ports_googlegroups.com
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

Internalize strings in-place (reland^3) using newly introduced ThinStrings, which store a pointer to the actual, internalized string they represent. BUG=v8:4520 (Previously landed as #42168 / af51befe694f) (Previously landed as #42193 / 4c699e349a49) (Previously landed as #42235 / ec45e6ed2e11) Review-Url: https://codereview.chromium.org/2549773002 Cr-Commit-Position: refs/heads/master@{#42503} Committed: https://chromium.googlesource.com/v8/v8/+/3e915e12a146fb346765ab5027c5e9ebad0600f9

Patch Set 1 #

Patch Set 2 : fix external strings #

Patch Set 3 : rebased #

Patch Set 4 : fix tests #

Patch Set 5 : fix builtins and TurboFan #

Patch Set 6 : rebased #

Patch Set 7 : fix RegExpExecStub #

Patch Set 8 : rebased #

Patch Set 9 : fix GCC compilation #

Patch Set 10 : more fixes #

Patch Set 11 : platform fixes #

Patch Set 12 : even moar fixes #

Patch Set 13 : forgot one #

Total comments: 21

Patch Set 14 : address most comments #

Patch Set 15 : rebased #

Patch Set 16 : rebased #

Patch Set 17 : fixes for reland (for cons+sliced strings) #

Patch Set 18 : fixes for 2nd reland #

Patch Set 19 : fix typo in test #

Patch Set 20 : rebased #

Patch Set 21 : rebased for reland^3 #

Patch Set 22 : fix platform ports and rebasing issue #

Patch Set 23 : fix LO-space verification #

Patch Set 24 : fix external string resource leak #

Patch Set 25 : fix performance #

Total comments: 4

Patch Set 26 : fix nit #

Patch Set 27 : rebased #

Unified diffs Side-by-side diffs Delta from patch set Stats (+1143 lines, -454 lines) Patch
M include/v8.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 2 chunks +4 lines, -4 lines 0 comments Download
M src/arm/code-stubs-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 4 chunks +12 lines, -4 lines 0 comments Download
M src/arm/codegen-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +14 lines, -7 lines 0 comments Download
M src/arm64/code-stubs-arm64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 6 chunks +17 lines, -9 lines 0 comments Download
M src/arm64/codegen-arm64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +15 lines, -7 lines 0 comments Download
M src/ast/ast-types.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +2 lines, -0 lines 0 comments Download
M src/builtins/builtins-object.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +18 lines, -15 lines 0 comments Download
M src/builtins/builtins-string.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 3 chunks +44 lines, -22 lines 0 comments Download
M src/code-stub-assembler.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 3 chunks +12 lines, -4 lines 0 comments Download
M src/code-stub-assembler.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 20 chunks +214 lines, -122 lines 0 comments Download
M src/code-stubs.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +1 line, -1 line 0 comments Download
M src/compiler/access-builder.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +3 lines, -0 lines 0 comments Download
M src/compiler/access-builder.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +9 lines, -0 lines 0 comments Download
M src/compiler/instruction-selector.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 +2 lines, -0 lines 0 comments Download
M src/compiler/types.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +2 lines, -0 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 1 chunk +2 lines, -0 lines 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 4 chunks +5 lines, -4 lines 0 comments Download
M src/factory.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +5 lines, -0 lines 0 comments Download
M src/factory.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 5 chunks +46 lines, -13 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 2 chunks +2 lines, -4 lines 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 4 chunks +42 lines, -13 lines 0 comments Download
M src/heap/heap-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 2 chunks +3 lines, -0 lines 0 comments Download
M src/heap/mark-compact.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +6 lines, -2 lines 0 comments Download
M src/heap/objects-visiting.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +1 line, -0 lines 0 comments Download
M src/heap/objects-visiting.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +3 lines, -0 lines 0 comments Download
M src/heap/objects-visiting-inl.h View 1 2 chunks +8 lines, -0 lines 0 comments Download
M src/heap/scavenger.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 4 chunks +27 lines, -0 lines 0 comments Download
M src/heap/spaces.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 1 chunk +6 lines, -4 lines 0 comments Download
M src/ia32/code-stubs-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 3 chunks +10 lines, -2 lines 0 comments Download
M src/ia32/codegen-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +16 lines, -9 lines 0 comments Download
M src/ia32/macro-assembler-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +5 lines, -3 lines 0 comments Download
M src/ic/accessor-assembler.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 4 chunks +6 lines, -2 lines 0 comments Download
M src/ic/ic.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +2 lines, -0 lines 0 comments Download
M src/ic/keyed-store-generic.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 5 chunks +12 lines, -11 lines 0 comments Download
M src/mips/code-stubs-mips.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 4 chunks +12 lines, -5 lines 0 comments Download
M src/mips/codegen-mips.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +13 lines, -8 lines 0 comments Download
M src/mips64/code-stubs-mips64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 4 chunks +12 lines, -5 lines 0 comments Download
M src/mips64/codegen-mips64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +13 lines, -8 lines 0 comments Download
M src/objects.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 9 chunks +54 lines, -18 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 14 chunks +107 lines, -21 lines 0 comments Download
M src/objects-body-descriptors-inl.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +2 lines, -0 lines 0 comments Download
M src/objects-debug.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 chunks +10 lines, -3 lines 0 comments Download
M src/objects-inl.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 8 chunks +33 lines, -4 lines 0 comments Download
M src/objects-printer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +2 lines, -0 lines 0 comments Download
M src/ppc/code-stubs-ppc.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 5 chunks +13 lines, -5 lines 0 comments Download
M src/ppc/codegen-ppc.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +16 lines, -10 lines 0 comments Download
M src/profiler/heap-snapshot-generator.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +4 lines, -0 lines 0 comments Download
M src/regexp/regexp-macro-assembler.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 chunks +5 lines, -0 lines 0 comments Download
M src/runtime/runtime-i18n.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 chunks +3 lines, -1 line 0 comments Download
M src/runtime/runtime-internal.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 chunks +2 lines, -0 lines 0 comments Download
M src/runtime/runtime-object.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +8 lines, -0 lines 0 comments Download
M src/runtime/runtime-regexp.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +3 lines, -0 lines 0 comments Download
M src/runtime/runtime-strings.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +3 lines, -0 lines 0 comments Download
M src/s390/code-stubs-s390.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 5 chunks +13 lines, -5 lines 0 comments Download
M src/s390/codegen-s390.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +17 lines, -11 lines 0 comments Download
M src/value-serializer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2 chunks +8 lines, -3 lines 0 comments Download
M src/x64/code-stubs-x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 3 chunks +10 lines, -2 lines 0 comments Download
M src/x64/codegen-x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +16 lines, -9 lines 0 comments Download
M src/x64/macro-assembler-x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +5 lines, -3 lines 0 comments Download
M src/x87/code-stubs-x87.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 3 chunks +10 lines, -2 lines 0 comments Download
M src/x87/codegen-x87.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +16 lines, -9 lines 0 comments Download
M src/x87/macro-assembler-x87.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 chunk +5 lines, -3 lines 0 comments Download
M test/cctest/test-code-stub-assembler.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 3 chunks +37 lines, -57 lines 0 comments Download
M test/cctest/test-strings.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +25 lines, -0 lines 0 comments Download
A test/mjsunit/thin-strings.js View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 chunk +90 lines, -0 lines 0 comments Download

Messages

Total messages: 86 (54 generated)
Jakob Kummerow
Igor: PTAL. Benedikt: Please review src/compiler/. This is my first nontrivial TF patch, so please ...
4 years ago (2016-12-17 02:33:51 UTC) #6
Benedikt Meurer
LGTM on compiler!
4 years ago (2016-12-17 11:42:29 UTC) #15
Yang
On 2016/12/17 11:42:29, Benedikt Meurer wrote: > LGTM on compiler! src/regexp lgtm.
4 years ago (2016-12-19 14:15:27 UTC) #16
Igor Sheludko
OMG! Awesome! "actual" could probably be "internalized". lgtm with nits: https://codereview.chromium.org/2549773002/diff/240001/src/code-stub-assembler.cc File src/code-stub-assembler.cc (right): https://codereview.chromium.org/2549773002/diff/240001/src/code-stub-assembler.cc#newcode3381 ...
3 years, 12 months ago (2016-12-20 23:46:58 UTC) #21
Hannes Payer (out of office)
https://codereview.chromium.org/2549773002/diff/240001/src/heap/scavenger.cc File src/heap/scavenger.cc (right): https://codereview.chromium.org/2549773002/diff/240001/src/heap/scavenger.cc#newcode445 src/heap/scavenger.cc:445: scavenging_visitors_table_.Register( Instead of using a special visitor when compacting, ...
3 years, 12 months ago (2016-12-21 09:53:14 UTC) #22
Jakob Kummerow
Addressed all comments but one. Hannes, can you please clarify your idea for scavenger.cc? (We ...
3 years, 11 months ago (2017-01-04 12:45:06 UTC) #23
Jakob Kummerow
Hannes, can you approve this please? https://codereview.chromium.org/2549773002/diff/240001/src/heap/scavenger.cc File src/heap/scavenger.cc (right): https://codereview.chromium.org/2549773002/diff/240001/src/heap/scavenger.cc#newcode445 src/heap/scavenger.cc:445: scavenging_visitors_table_.Register( On 2016/12/21 ...
3 years, 11 months ago (2017-01-09 17:42:31 UTC) #24
Hannes Payer (out of office)
lgtm
3 years, 11 months ago (2017-01-10 10:19:20 UTC) #29
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2549773002/300001
3 years, 11 months ago (2017-01-10 10:21:02 UTC) #32
commit-bot: I haz the power
Committed patchset #16 (id:300001) as https://chromium.googlesource.com/v8/v8/+/af51befe694fe039db3554d4b9165f7d6baceb77
3 years, 11 months ago (2017-01-10 10:58:12 UTC) #35
Michael Achenbach
A revert of this CL (patchset #16 id:300001) has been created in https://codereview.chromium.org/2621913002/ by machenbach@chromium.org. ...
3 years, 11 months ago (2017-01-10 11:32:39 UTC) #36
Michael Achenbach
On 2017/01/10 11:32:39, Michael Achenbach wrote: > A revert of this CL (patchset #16 id:300001) ...
3 years, 11 months ago (2017-01-10 11:55:37 UTC) #37
Michael Achenbach
Also breaks layout tests: https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/12528
3 years, 11 months ago (2017-01-10 11:56:01 UTC) #38
Jakob Kummerow
Turns out both SlicedStrings and flat ConsStrings can point to ThinStrings as their parent()/first(); this ...
3 years, 11 months ago (2017-01-10 15:51:03 UTC) #39
Igor Sheludko
lgtm
3 years, 11 months ago (2017-01-10 16:03:34 UTC) #41
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2549773002/320001
3 years, 11 months ago (2017-01-10 19:06:20 UTC) #48
commit-bot: I haz the power
Committed patchset #17 (id:320001) as https://chromium.googlesource.com/v8/v8/+/4c699e349a4986b28574b3a51e8780e3a3d067b1
3 years, 11 months ago (2017-01-10 19:09:05 UTC) #51
Jakob Kummerow
A revert of this CL (patchset #17 id:320001) has been created in https://codereview.chromium.org/2625073002/ by jkummerow@chromium.org. ...
3 years, 11 months ago (2017-01-11 09:59:29 UTC) #52
Jakob Kummerow
Of course if you fix something in C++, you also have to fix it in ...
3 years, 11 months ago (2017-01-11 12:03:46 UTC) #54
Igor Sheludko
lgtm
3 years, 11 months ago (2017-01-11 12:10:38 UTC) #55
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2549773002/340001
3 years, 11 months ago (2017-01-11 13:18:29 UTC) #58
commit-bot: I haz the power
Try jobs failed on following builders: v8_win_nosnap_shared_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_win_nosnap_shared_rel_ng/builds/15187) v8_win_nosnap_shared_rel_ng_triggered on master.tryserver.v8 (JOB_FAILED, ...
3 years, 11 months ago (2017-01-11 13:37:45 UTC) #60
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2549773002/380001
3 years, 11 months ago (2017-01-11 14:19:33 UTC) #63
commit-bot: I haz the power
Committed patchset #20 (id:380001) as https://chromium.googlesource.com/v8/v8/+/ec45e6ed2e11698c713e664b1510bc31bcdbbdba
3 years, 11 months ago (2017-01-11 14:59:43 UTC) #66
Jakob Kummerow
A revert of this CL (patchset #20 id:380001) has been created in https://codereview.chromium.org/2626893005/ by jkummerow@chromium.org. ...
3 years, 11 months ago (2017-01-12 14:49:39 UTC) #67
Jakob Kummerow
Ready for another look. Patch set 21 is just a revert of the revert, as ...
3 years, 11 months ago (2017-01-18 14:08:17 UTC) #69
Igor Sheludko
lgtm https://codereview.chromium.org/2549773002/diff/480001/src/code-stub-assembler.cc File src/code-stub-assembler.cc (right): https://codereview.chromium.org/2549773002/diff/480001/src/code-stub-assembler.cc#newcode3583 src/code-stub-assembler.cc:3583: GotoIf(WordEqual(rhs, EmptyStringConstant()), &deref); Maybe we should stop using ...
3 years, 11 months ago (2017-01-18 14:55:21 UTC) #74
Jakob Kummerow
Thanks, nit addressed. https://codereview.chromium.org/2549773002/diff/480001/src/code-stub-assembler.cc File src/code-stub-assembler.cc (right): https://codereview.chromium.org/2549773002/diff/480001/src/code-stub-assembler.cc#newcode3583 src/code-stub-assembler.cc:3583: GotoIf(WordEqual(rhs, EmptyStringConstant()), &deref); On 2017/01/18 14:55:20, ...
3 years, 11 months ago (2017-01-19 10:20:16 UTC) #75
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2549773002/500001
3 years, 11 months ago (2017-01-19 10:20:31 UTC) #78
commit-bot: I haz the power
Try jobs failed on following builders: v8_linux64_gyp_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_gyp_rel_ng/builds/11498) v8_linux64_rel_ng on master.tryserver.v8 (JOB_FAILED, ...
3 years, 11 months ago (2017-01-19 10:22:22 UTC) #80
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2549773002/520001
3 years, 11 months ago (2017-01-19 12:49:57 UTC) #83
commit-bot: I haz the power
3 years, 11 months ago (2017-01-19 13:28:09 UTC) #86
Message was sent while issue was closed.
Committed patchset #27 (id:520001) as
https://chromium.googlesource.com/v8/v8/+/3e915e12a146fb346765ab5027c5e9ebad0...

Powered by Google App Engine
This is Rietveld 408576698