|
|
Description[stubs]: Generalize loop handling in CodeStubAssembler and improve common loop performance
Specifically an attempt to address a 3.5% regression on the total load
time on cnn introduced by https://codereview.chromium.org/2113673002.
Non-refactoring effect of this CL is to reduce the number of branches in
CodeStubAssembler-generated loops iterating over FixedArrays from
two to one.
LOG=N
BUG=v8:5423
Committed: https://crrev.com/697aa6f579675db873fdc4c2eaf578fab8126b40
Cr-Commit-Position: refs/heads/master@{#40020}
Patch Set 1 #Patch Set 2 : Fix ia32 #Patch Set 3 : Simplifications #Patch Set 4 : Rebase #Patch Set 5 : Remove ununsed header #Patch Set 6 : y #
Total comments: 10
Patch Set 7 : Review feedback #Patch Set 8 : Rebase #
Total comments: 1
Patch Set 9 : Micro optimization #Patch Set 10 : Nit #Patch Set 11 : Nit #Patch Set 12 : Working version #
Messages
Total messages: 56 (48 generated)
The CQ bit was checked by danno@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: 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...) v8_win_nosnap_shared_rel_ng_triggered on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_win_nosnap_shared_rel_ng...)
The CQ bit was checked by danno@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by danno@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_linux64_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_rel_ng/builds/13805) v8_linux_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_rel_ng/builds/13771) v8_mac_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_mac_rel_ng/builds/9996)
The CQ bit was checked by danno@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
Description was changed from ========== [stubs]: Generalize loop handling in CodeStubAssembler and improve common loop perforamnce LOG=N BUG= ========== to ========== [stubs]: Generalize loop handling in CodeStubAssembler and improve common loop perforamnce Specifically an attempt to address a 3.5% regression on the total load time on cnn introduced by https://codereview.chromium.org/2113673002. Non-refactoring effect of this CL is to reduce the number of branches in CodeStubAssembler-generated loops iterating over FixedArrays from two to one. LOG=N BUG=v8:5423 ==========
danno@chromium.org changed reviewers: + bmeurer@chromium.org, mstarzinger@chromium.org
The CQ bit was checked by danno@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
ptal
bmeurer@chromium.org changed reviewers: + ishell@chromium.org - mstarzinger@chromium.org
bmeurer@chromium.org changed required reviewers: + ishell@chromium.org
Definitely something Igor should review. In general Igor is considered the (main) owner of CodeStubAssembler now and all non-trivial changes should have an LGTM from Igor. This is LGTM from my side (although I wish we could make this less fancy... higher order functions in C++).
Description was changed from ========== [stubs]: Generalize loop handling in CodeStubAssembler and improve common loop perforamnce Specifically an attempt to address a 3.5% regression on the total load time on cnn introduced by https://codereview.chromium.org/2113673002. Non-refactoring effect of this CL is to reduce the number of branches in CodeStubAssembler-generated loops iterating over FixedArrays from two to one. LOG=N BUG=v8:5423 ========== to ========== [stubs]: Generalize loop handling in CodeStubAssembler and improve common loop performance Specifically an attempt to address a 3.5% regression on the total load time on cnn introduced by https://codereview.chromium.org/2113673002. Non-refactoring effect of this CL is to reduce the number of branches in CodeStubAssembler-generated loops iterating over FixedArrays from two to one. LOG=N BUG=v8:5423 ==========
https://codereview.chromium.org/2380953002/diff/100001/src/code-stub-assemble... File src/code-stub-assembler.cc (right): https://codereview.chromium.org/2380953002/diff/100001/src/code-stub-assemble... src/code-stub-assembler.cc:5661: { Why not just put GotoIf(WordEqual(var.value(), end_index), &after_loop); here instead of a condition check before the loop and another one below? Is it about how TurboFan orders the blocks? https://codereview.chromium.org/2380953002/diff/100001/src/code-stub-assemble... src/code-stub-assembler.cc:5681: ParameterMode mode, ForEachDirection direction) { I think we should put this assert somewhere in this function: // The code below relies on array headers having the same size. STATIC_ASSERT(FixedArray::kHeaderSize == FixedDoubleArray::kHeaderSize); https://codereview.chromium.org/2380953002/diff/100001/src/code-stub-assemble... src/code-stub-assembler.cc:5694: ElementOffsetFromIndex(index, FAST_ELEMENTS, mode, I think you intended to use |kind| instead of |FAST_ELEMENTS| and INTPTR_PARAMETERS instead of |mode| here. https://codereview.chromium.org/2380953002/diff/100001/src/code-stub-assemble... src/code-stub-assembler.cc:5702: ElementOffsetFromIndex(index, FAST_ELEMENTS, mode, Same here https://codereview.chromium.org/2380953002/diff/100001/src/code-stub-assemble... src/code-stub-assembler.cc:5722: [fixed_array, body](CodeStubAssembler* assembler, Node* index) { s/index/offset/
The CQ bit was checked by danno@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Feedback addressed. PTAL. https://codereview.chromium.org/2380953002/diff/100001/src/code-stub-assemble... File src/code-stub-assembler.cc (right): https://codereview.chromium.org/2380953002/diff/100001/src/code-stub-assemble... src/code-stub-assembler.cc:5661: { On 2016/10/04 09:32:25, Igor Sheludko wrote: > Why not just put > GotoIf(WordEqual(var.value(), end_index), &after_loop); > here instead of a condition check before the loop and another one below? > Is it about how TurboFan orders the blocks? As discussed offline, for efficiency. Comment added. https://codereview.chromium.org/2380953002/diff/100001/src/code-stub-assemble... src/code-stub-assembler.cc:5681: ParameterMode mode, ForEachDirection direction) { On 2016/10/04 09:32:25, Igor Sheludko wrote: > I think we should put this assert somewhere in this function: > > // The code below relies on array headers having the same size. > STATIC_ASSERT(FixedArray::kHeaderSize == FixedDoubleArray::kHeaderSize); Done. https://codereview.chromium.org/2380953002/diff/100001/src/code-stub-assemble... src/code-stub-assembler.cc:5694: ElementOffsetFromIndex(index, FAST_ELEMENTS, mode, On 2016/10/04 09:32:25, Igor Sheludko wrote: > I think you intended to use |kind| instead of |FAST_ELEMENTS| and > INTPTR_PARAMETERS instead of |mode| here. Done. https://codereview.chromium.org/2380953002/diff/100001/src/code-stub-assemble... src/code-stub-assembler.cc:5702: ElementOffsetFromIndex(index, FAST_ELEMENTS, mode, On 2016/10/04 09:32:25, Igor Sheludko wrote: > Same here Done. https://codereview.chromium.org/2380953002/diff/100001/src/code-stub-assemble... src/code-stub-assembler.cc:5722: [fixed_array, body](CodeStubAssembler* assembler, Node* index) { On 2016/10/04 09:32:25, Igor Sheludko wrote: > s/index/offset/ Done.
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_linux_mips64el_compile_rel on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_mips64el_compile_r...) v8_linux_mipsel_compile_rel on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_mipsel_compile_rel...) v8_linux_nodcheck_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_nodcheck_rel_ng/bu...) v8_mac_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_mac_rel_ng/builds/10100)
The CQ bit was checked by danno@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
lgtm with a nit: https://codereview.chromium.org/2380953002/diff/140001/src/code-stub-assemble... File src/code-stub-assembler.cc (right): https://codereview.chromium.org/2380953002/diff/140001/src/code-stub-assemble... src/code-stub-assembler.cc:5704: // loop that help's turbofan generate better code. If there's only a single s/help's/helps/
The CQ bit was checked by danno@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was checked by danno@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_linux_chromium_gn_rel on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_chromium_gn_rel/bu...)
Patchset #12 (id:220001) has been deleted
The CQ bit was checked by danno@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by danno@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from bmeurer@chromium.org, ishell@chromium.org Link to the patchset: https://codereview.chromium.org/2380953002/#ps240001 (title: "Working version")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Message was sent while issue was closed.
Description was changed from ========== [stubs]: Generalize loop handling in CodeStubAssembler and improve common loop performance Specifically an attempt to address a 3.5% regression on the total load time on cnn introduced by https://codereview.chromium.org/2113673002. Non-refactoring effect of this CL is to reduce the number of branches in CodeStubAssembler-generated loops iterating over FixedArrays from two to one. LOG=N BUG=v8:5423 ========== to ========== [stubs]: Generalize loop handling in CodeStubAssembler and improve common loop performance Specifically an attempt to address a 3.5% regression on the total load time on cnn introduced by https://codereview.chromium.org/2113673002. Non-refactoring effect of this CL is to reduce the number of branches in CodeStubAssembler-generated loops iterating over FixedArrays from two to one. LOG=N BUG=v8:5423 ==========
Message was sent while issue was closed.
Committed patchset #12 (id:240001)
Message was sent while issue was closed.
Description was changed from ========== [stubs]: Generalize loop handling in CodeStubAssembler and improve common loop performance Specifically an attempt to address a 3.5% regression on the total load time on cnn introduced by https://codereview.chromium.org/2113673002. Non-refactoring effect of this CL is to reduce the number of branches in CodeStubAssembler-generated loops iterating over FixedArrays from two to one. LOG=N BUG=v8:5423 ========== to ========== [stubs]: Generalize loop handling in CodeStubAssembler and improve common loop performance Specifically an attempt to address a 3.5% regression on the total load time on cnn introduced by https://codereview.chromium.org/2113673002. Non-refactoring effect of this CL is to reduce the number of branches in CodeStubAssembler-generated loops iterating over FixedArrays from two to one. LOG=N BUG=v8:5423 Committed: https://crrev.com/697aa6f579675db873fdc4c2eaf578fab8126b40 Cr-Commit-Position: refs/heads/master@{#40020} ==========
Message was sent while issue was closed.
Patchset 12 (id:??) landed as https://crrev.com/697aa6f579675db873fdc4c2eaf578fab8126b40 Cr-Commit-Position: refs/heads/master@{#40020} |