1. 16 Mar, 2021 1 commit
    • Jakob Gruber's avatar
      [compiler] Concurrent JSObjectRef::GetOwnConstantElement · 21a23587
      Jakob Gruber authored
      This CL implements the above in a concurrent setting without relying
      on serialization (except existing serialization to read a consistent
      JSObject state, which should be addressed in future work).
      
      There are three main cases in which GetOwnConstantElement can succeed:
      
      - Frozen elements are always constant. The backing store is immutable
      after initialization and can be accessed through relaxed reads.
      - String wrapper elements are always constant. The JSPrimitiveWrapper
      is immutable after initialization, and internalized Strings are
      protected by a mutex (other string kinds are currently not handled).
      - Dictionary elements may be constant. Since this case is not
      particularly important for the optimization, we leave it unimplemented
      for now.
      
      Bug: v8:7790
      Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_no_cm_rel_ng
      Change-Id: If2fbced50218ebd3930da8157cd2ae5eb83a8e02
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2717308Reviewed-by: 's avatarSantiago Aboy Solanes <solanes@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73442}
      21a23587
  2. 08 Mar, 2021 1 commit
  3. 22 Feb, 2021 1 commit
    • Jakob Gruber's avatar
      Reland "[compiler] Direct heap reads for JSArrayRef" · 2e844377
      Jakob Gruber authored
      This is a reland of 76a2ab06
      
      Changes since the original CL:
      - Handle unserialized elements (optional result in getter).
      - Merge should_access_heap and --turbo-direct-heap-access paths.
      - Slightly update the serialized path in GetOwnCowElement.
      - Fix the cctest, add a regression test.
      
      Atomic JSObject::elements/JSArray::length setters are addressed
      in this CL: crrev.com/c/2704076.
      
      Original change's description:
      > [compiler] Direct heap reads for JSArrayRef
      >
      > There are two aspects to the non-JSObject parts of JSArrayRef:
      >
      > - JSArrayRef::length. Relevant only in two spots, 1. when reading
      > (immutable) array boilerplates and 2. for GetOwnCowElement.
      >
      > - JSArrayRef::GetOwnCowElement. May read into a copy-on-write backing
      > store. Relies on the invariant that cow backing stores are immutable.
      >
      > This CL renames the length accessor to length_unsafe to make the
      > danger explicit at callsites.
      >
      > For GetOwnCowElement the refactor is slightly larger, since we now
      > need to read into the backing store while keeping full control of
      > object reads (e.g. JSArray::length and JSArray::elements_kind). We
      > make all reads explicit at the call site by requiring that elements,
      > elements kind, and length are passed in as arguments to
      > GetOwnCowElement. Inside GetOwnCowElement, consistency between these
      > is *not* guaranteed due to concurrency. At runtime, consistency *is*
      > guaranteed through the reference-equality check on the elements seen
      > during compilation. The actual elements read is implemented in
      > ConcurrentLookupIterator::GetOwnCowElement.
      >
      > Bug: v8:7790
      > Change-Id: I9aa169ce4f2b1e2bfe1e9232007669eb7654a995
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695403
      > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#72834}
      
      Bug: v8:7790
      Change-Id: I7577ad554992cafff81099a28c34f27db9bd8042
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2710431
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72904}
      2e844377
  4. 19 Feb, 2021 1 commit
    • Georg Neis's avatar
      Revert "[compiler] Direct heap reads for JSArrayRef" · 3cfe4fe0
      Georg Neis authored
      This reverts commit 76a2ab06.
      
      Reason for revert: A few issues, e.g.
      https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8854931126653780144/+/u/Check__flakes_/ArrayWithCowElements
      
      Original change's description:
      > [compiler] Direct heap reads for JSArrayRef
      >
      > There are two aspects to the non-JSObject parts of JSArrayRef:
      >
      > - JSArrayRef::length. Relevant only in two spots, 1. when reading
      > (immutable) array boilerplates and 2. for GetOwnCowElement.
      >
      > - JSArrayRef::GetOwnCowElement. May read into a copy-on-write backing
      > store. Relies on the invariant that cow backing stores are immutable.
      >
      > This CL renames the length accessor to length_unsafe to make the
      > danger explicit at callsites.
      >
      > For GetOwnCowElement the refactor is slightly larger, since we now
      > need to read into the backing store while keeping full control of
      > object reads (e.g. JSArray::length and JSArray::elements_kind). We
      > make all reads explicit at the call site by requiring that elements,
      > elements kind, and length are passed in as arguments to
      > GetOwnCowElement. Inside GetOwnCowElement, consistency between these
      > is *not* guaranteed due to concurrency. At runtime, consistency *is*
      > guaranteed through the reference-equality check on the elements seen
      > during compilation. The actual elements read is implemented in
      > ConcurrentLookupIterator::GetOwnCowElement.
      >
      > Bug: v8:7790
      > Change-Id: I9aa169ce4f2b1e2bfe1e9232007669eb7654a995
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695403
      > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#72834}
      
      Bug: v8:7790, chromium:1180012
      Change-Id: I50e72380c544b2b78e1e3dc87a8249281b710912
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2704666
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72860}
      3cfe4fe0
  5. 18 Feb, 2021 1 commit
    • Jakob Gruber's avatar
      [compiler] Direct heap reads for JSArrayRef · 76a2ab06
      Jakob Gruber authored
      There are two aspects to the non-JSObject parts of JSArrayRef:
      
      - JSArrayRef::length. Relevant only in two spots, 1. when reading
      (immutable) array boilerplates and 2. for GetOwnCowElement.
      
      - JSArrayRef::GetOwnCowElement. May read into a copy-on-write backing
      store. Relies on the invariant that cow backing stores are immutable.
      
      This CL renames the length accessor to length_unsafe to make the
      danger explicit at callsites.
      
      For GetOwnCowElement the refactor is slightly larger, since we now
      need to read into the backing store while keeping full control of
      object reads (e.g. JSArray::length and JSArray::elements_kind). We
      make all reads explicit at the call site by requiring that elements,
      elements kind, and length are passed in as arguments to
      GetOwnCowElement. Inside GetOwnCowElement, consistency between these
      is *not* guaranteed due to concurrency. At runtime, consistency *is*
      guaranteed through the reference-equality check on the elements seen
      during compilation. The actual elements read is implemented in
      ConcurrentLookupIterator::GetOwnCowElement.
      
      Bug: v8:7790
      Change-Id: I9aa169ce4f2b1e2bfe1e9232007669eb7654a995
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695403
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72834}
      76a2ab06
  6. 11 Feb, 2021 1 commit
  7. 04 Feb, 2021 1 commit
  8. 24 Sep, 2020 2 commits
  9. 22 Sep, 2020 1 commit
  10. 02 Sep, 2020 1 commit
  11. 10 Jan, 2020 1 commit
  12. 09 Jan, 2020 1 commit
  13. 26 Nov, 2019 1 commit
    • Jakob Kummerow's avatar
      More LookupIterator fixes after r65078 · 3ac7a3e5
      Jakob Kummerow authored
      (1) One more place in ic.cc must guard against "lookup->name()" calls
      when the LookupIterator might be in indexed mode.
      
      (2) Rather than burdening LookupIterator users with specifying
      "kGuaranteedNoTypedArray", we can do the corresponding calculation in
      the LookupIterator itself, which makes it robust towards any callers
      that haven't been updated (specifically, in Object.values).
      
      Bug: chromium:1027461,chromium:1028213
      Change-Id: I76b5d08e309fc2a694955b537adbeb5a30e681f7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1936474Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65177}
      3ac7a3e5
  14. 20 Nov, 2019 1 commit
  15. 18 Oct, 2019 1 commit
  16. 16 Oct, 2019 1 commit
  17. 11 Oct, 2019 1 commit
  18. 09 Jul, 2019 1 commit
  19. 26 Jun, 2019 1 commit
    • Leszek Swirski's avatar
      [map] Update map in PrepareForDataProperty · 9c1363e5
      Leszek Swirski authored
      Deprecated maps might not be updated before being passed to
      PrepareForDataProperty. If the target map is a dictionary map,
      then adding the data property can fail.
      
      As a drive-by, remove the dead ForTransitionHandler code, which
      was another (potentially unsafe) caller of PrepareForDataProperty
      
      Bug: chromium:977012
      Change-Id: I894bbc9bca2001555474a3570eb03fe6b0f69ddd
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1674029
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#62377}
      9c1363e5
  20. 24 May, 2019 1 commit
  21. 23 May, 2019 2 commits
  22. 22 May, 2019 1 commit
  23. 20 May, 2019 1 commit
  24. 27 Apr, 2019 1 commit
  25. 26 Dec, 2018 1 commit
  26. 17 Dec, 2018 1 commit
  27. 08 Dec, 2018 1 commit
  28. 13 Nov, 2018 1 commit
  29. 29 Oct, 2018 1 commit
  30. 11 Sep, 2018 2 commits
  31. 30 Jul, 2018 1 commit
  32. 23 Jul, 2018 1 commit
  33. 17 Jul, 2018 1 commit
  34. 04 Jul, 2018 1 commit
  35. 02 Jul, 2018 1 commit
  36. 09 Apr, 2018 2 commits