|
|
Created:
4 years, 3 months ago by Igor Sheludko Modified:
4 years, 3 months ago Reviewers:
Benedikt Meurer CC:
v8-reviews_googlegroups.com Target Ref:
refs/pending/heads/master Project:
v8 Visibility:
Public. |
Description[stubs] Port StoreFastElementsStub to TurboFan.
This CL adds CSA::Retain() operation that ensures that the value is kept alive even during GC.
BUG=v8:5269
Committed: https://crrev.com/cce56a3f470d4f8f4c241208b166dea5e09d0620
Cr-Commit-Position: refs/heads/master@{#39407}
Patch Set 1 #
Total comments: 16
Patch Set 2 : Addressing comments #Patch Set 3 : Rebasing #
Total comments: 2
Patch Set 4 : Retain operator added #Patch Set 5 : Retain removed, a comment added #
Messages
Total messages: 57 (49 generated)
Description was changed from ========== [stubs] Port StoreFastElementsStub to TurboFan. cherry-picking missing parts fixing Implementing typed array support remove debug break BUG= ========== to ========== [stubs] Port StoreFastElementsStub to TurboFan. BUG=v8:5269 ==========
The CQ bit was checked by ishell@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...
Patchset #1 (id:1) has been deleted
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: v8_linux64_avx2_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_avx2_rel_ng/buil...) v8_linux64_gyp_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_gyp_rel_ng/build...) v8_linux64_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_rel_ng/builds/12550) v8_linux_arm_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_arm_rel_ng/builds/...) v8_linux_dbg_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_dbg_ng/builds/12545) v8_linux_gcc_compile_rel on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_gcc_compile_rel/bu...) 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_presubmit on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_presubmit/builds/23823)
The CQ bit was checked by ishell@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_mac_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_mac_rel_ng/builds/8662)
The CQ bit was checked by ishell@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_asan_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_asan_rel_ng/buil...) v8_linux64_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_rel_ng/builds/12570) v8_linux_arm64_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_arm64_rel_ng/build...) v8_linux_arm_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_arm_rel_ng/builds/...) v8_linux_gcc_compile_rel on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux_gcc_compile_rel/bu...) 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_mac_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_mac_rel_ng/builds/8678)
Patchset #1 (id:20001) has been deleted
The CQ bit was checked by ishell@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_gyp_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_gyp_rel_ng/build...) v8_linux64_gyp_rel_ng_triggered on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_linux64_gyp_rel_ng_trigg...)
Patchset #1 (id:40001) has been deleted
The CQ bit was checked by ishell@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_rel_ng on master.tryserver.v8 (JOB_FAILED, http://build.chromium.org/p/tryserver.v8/builders/v8_win_rel_ng/builds/14148)
ishell@chromium.org changed reviewers: + bmeurer@chromium.org
PTAL
https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler.cc File src/code-stub-assembler.cc (right): https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4473: namespace { Nit: add empty line. https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4496: } // namespace Nit: add empty line. https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4554: bailout); Maybe you want to check the upper bound as well, and not store in that case (i.e. skip the rest of the function). https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4556: DCHECK(store_mode == STANDARD_STORE); Nit: DCHECK_EQ https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4565: Node* backing_store = IntPtrAdd(external_pointer, base_pointer); You must not have a GC afterwards before you store to this, otherwise you'll get weird crashers. https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4574: value = TryToIntptr(value, bailout); Maybe add a TODO here, that JS truncation would be fine for word8/16/32 to truncate the value. https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4577: parameter_mode); You probably need to insert a Retain for the buffer. Maybe the same for the loads. https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4650: if (kind == FAST_SMI_ELEMENTS) { This shouldn't be necessary, it was only necessary in CS because the storekeyed could deopt (for smis).
Patchset #3 (id:100001) has been deleted
https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler.cc File src/code-stub-assembler.cc (right): https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4473: namespace { On 2016/09/13 09:08:00, Benedikt Meurer wrote: > Nit: add empty line. Done. https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4496: } // namespace On 2016/09/13 09:08:00, Benedikt Meurer wrote: > Nit: add empty line. Done. https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4554: bailout); On 2016/09/13 09:08:00, Benedikt Meurer wrote: > Maybe you want to check the upper bound as well, and not store in that case > (i.e. skip the rest of the function). Done. Thanks! https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4556: DCHECK(store_mode == STANDARD_STORE); On 2016/09/13 09:08:00, Benedikt Meurer wrote: > Nit: DCHECK_EQ Done. https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4565: Node* backing_store = IntPtrAdd(external_pointer, base_pointer); On 2016/09/13 09:08:00, Benedikt Meurer wrote: > You must not have a GC afterwards before you store to this, otherwise you'll get > weird crashers. Done. https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4574: value = TryToIntptr(value, bailout); On 2016/09/13 09:08:00, Benedikt Meurer wrote: > Maybe add a TODO here, that JS truncation would be fine for word8/16/32 to > truncate the value. Done. https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4577: parameter_mode); On 2016/09/13 09:08:00, Benedikt Meurer wrote: > You probably need to insert a Retain for the buffer. > Maybe the same for the loads. I rearranged the code so that the value preparation is done before we access the buffer and friends. https://codereview.chromium.org/2330063002/diff/60001/src/code-stub-assembler... src/code-stub-assembler.cc:4650: if (kind == FAST_SMI_ELEMENTS) { On 2016/09/13 09:08:00, Benedikt Meurer wrote: > This shouldn't be necessary, it was only necessary in CS because the storekeyed > could deopt (for smis). Indeed, it's not necessary. Thanks!
The CQ bit was checked by ishell@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 comment. https://codereview.chromium.org/2330063002/diff/120001/src/code-stub-assemble... File src/code-stub-assembler.cc (right): https://codereview.chromium.org/2330063002/diff/120001/src/code-stub-assemble... src/code-stub-assembler.cc:4768: StoreElement(backing_store, elements_kind, key, value, parameter_mode); Can we Retain the buffer for safety reasons for now? And add a TODO.
Patchset #4 (id:140001) has been deleted
Description was changed from ========== [stubs] Port StoreFastElementsStub to TurboFan. BUG=v8:5269 ========== to ========== [stubs] Port StoreFastElementsStub to TurboFan. This CL adds CSA::Retain() operator that ensures that the value is kept alive during GC. BUG=v8:5269 ==========
https://codereview.chromium.org/2330063002/diff/120001/src/code-stub-assemble... File src/code-stub-assembler.cc (right): https://codereview.chromium.org/2330063002/diff/120001/src/code-stub-assemble... src/code-stub-assembler.cc:4768: StoreElement(backing_store, elements_kind, key, value, parameter_mode); On 2016/09/13 11:02:57, Benedikt Meurer wrote: > Can we Retain the buffer for safety reasons for now? And add a TODO. Done.
The CQ bit was checked by ishell@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...
Description was changed from ========== [stubs] Port StoreFastElementsStub to TurboFan. This CL adds CSA::Retain() operator that ensures that the value is kept alive during GC. BUG=v8:5269 ========== to ========== [stubs] Port StoreFastElementsStub to TurboFan. This CL adds CSA::Retain() operation that guarantees that the value is kept alive even during GC. BUG=v8:5269 ==========
Description was changed from ========== [stubs] Port StoreFastElementsStub to TurboFan. This CL adds CSA::Retain() operation that guarantees that the value is kept alive even during GC. BUG=v8:5269 ========== to ========== [stubs] Port StoreFastElementsStub to TurboFan. This CL adds CSA::Retain() operation that ensures that the value is kept alive even during GC. BUG=v8:5269 ==========
Patchset #4 (id:160001) has been deleted
The CQ bit was checked by ishell@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 ishell@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 ishell@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from bmeurer@chromium.org Link to the patchset: https://codereview.chromium.org/2330063002/#ps200001 (title: "Retain removed, a comment added")
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] Port StoreFastElementsStub to TurboFan. This CL adds CSA::Retain() operation that ensures that the value is kept alive even during GC. BUG=v8:5269 ========== to ========== [stubs] Port StoreFastElementsStub to TurboFan. This CL adds CSA::Retain() operation that ensures that the value is kept alive even during GC. BUG=v8:5269 ==========
Message was sent while issue was closed.
Committed patchset #5 (id:200001)
Message was sent while issue was closed.
Description was changed from ========== [stubs] Port StoreFastElementsStub to TurboFan. This CL adds CSA::Retain() operation that ensures that the value is kept alive even during GC. BUG=v8:5269 ========== to ========== [stubs] Port StoreFastElementsStub to TurboFan. This CL adds CSA::Retain() operation that ensures that the value is kept alive even during GC. BUG=v8:5269 Committed: https://crrev.com/cce56a3f470d4f8f4c241208b166dea5e09d0620 Cr-Commit-Position: refs/heads/master@{#39407} ==========
Message was sent while issue was closed.
Patchset 5 (id:??) landed as https://crrev.com/cce56a3f470d4f8f4c241208b166dea5e09d0620 Cr-Commit-Position: refs/heads/master@{#39407} |