1. 13 Feb, 2019 2 commits
    • Pierre Langlois's avatar
      [heap] Relax accesses to a page's live byte count. · da2300f6
      Pierre Langlois authored
      Each page has a `live_byte_count_` field in its header and it is always accessed
      with atomic operations. However, apart from one corner case, this field is only
      accessed by the main thread so let's remove the atomicity by default.
      
      To summarise, this changes the MarkingState accessors in the following way:
      
      - IncrementalMarkingState:
      
      Accesses of live_byte_count_ are now non-atomic. Concurrent marking uses local
      maps of live bytes per page so we have exclusive access to the field when using
      this.
      
      - MajorAtomicMarkingState:
      
      This accessor does not guarantee exclusive access to live_byte_count_ so we need
      to keep the access atomic. This is used by the scavenger when migrating an
      object that was marked black, since marking an object black will implicitly
      increment the live_byte_count_.
      
      Additionally, the live_bytes() and SetLiveBytes() accessor methods were not used
      so remove them.
      
      - MajorNonAtomicMarkingState:
      
      Accesses of live_byte_count_ are not actually non-atomic.
      
      - MinorNonAtomicMarkingState:
      
      The `young_generation_live_byte_count_` field is atomic so we can set the memory
      order manual to relax accesses.
      
      Change-Id: I4c6457843783157ca878540e34ad50878afee20c
      Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel
      Reviewed-on: https://chromium-review.googlesource.com/c/1456095Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Pierre Langlois <pierre.langlois@arm.com>
      Cr-Commit-Position: refs/heads/master@{#59548}
      da2300f6
    • Sigurd Schneider's avatar
      [GC] Small clean-ups · e7063b3d
      Sigurd Schneider authored
      - const return type on Full{,Maybe,Heap}ObjectSlot::operator*
      - Removed stale friend declarations
      - Moved a method to the right section
      
      Bug: v8:8557
      Change-Id: I0bd3efdb96a7d997b4404d3a247bea55b083d611
      Reviewed-on: https://chromium-review.googlesource.com/c/1467781Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59546}
      e7063b3d
  2. 11 Feb, 2019 1 commit
  3. 30 Jan, 2019 1 commit
  4. 22 Jan, 2019 1 commit
  5. 18 Jan, 2019 3 commits
    • Clemens Hammacher's avatar
      Revert "Reland "[GC] Ensure JSFunctions with flushed bytecode are flushed during GC."" · 1a95d4de
      Clemens Hammacher authored
      This reverts commit d5e63b03.
      
      Reason for revert: Fails gc-stress: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Mac64%20GC%20Stress/5312
      
      Original change's description:
      > Reland "[GC] Ensure JSFunctions with flushed bytecode are flushed during GC."
      > 
      > This is a reland of f5729f1c
      > 
      > TBR=ulan@chromium.org
      > 
      > Original change's description:
      > > [GC] Ensure JSFunctions with flushed bytecode are flushed during GC.
      > >
      > > When bytecode is flushed from a SFI, the JSFunctions still retain their
      > > FeedbackVector's and point to the interpreter entry trampoline. They are
      > > reset if re-executed, however if not they could hold onto the feedback
      > > vector indefinetly. This CL adds a pass the GC to detect JSFunctions that
      > > need to be reset, and performs the reset at the end of GC.
      > >
      > > BUG=v8:8395
      > >
      > > Change-Id: I3de8655aff9ff80f912b4fd51dee43eb98cfd519
      > > Reviewed-on: https://chromium-review.googlesource.com/c/1393292
      > > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#58775}
      > 
      > Bug: v8:8395
      > Change-Id: I9bc84b62332575a080561c51f08b699b91e41e4a
      > Reviewed-on: https://chromium-review.googlesource.com/c/1414859
      > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58924}
      
      TBR=ulan@chromium.org,rmcilroy@chromium.org
      
      Change-Id: I5d3012d4c7277ae792b0488780ff426d51dd602f
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:8395
      Reviewed-on: https://chromium-review.googlesource.com/c/1421838Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58925}
      1a95d4de
    • Ross McIlroy's avatar
      Reland "[GC] Ensure JSFunctions with flushed bytecode are flushed during GC." · d5e63b03
      Ross McIlroy authored
      This is a reland of f5729f1c
      
      TBR=ulan@chromium.org
      
      Original change's description:
      > [GC] Ensure JSFunctions with flushed bytecode are flushed during GC.
      >
      > When bytecode is flushed from a SFI, the JSFunctions still retain their
      > FeedbackVector's and point to the interpreter entry trampoline. They are
      > reset if re-executed, however if not they could hold onto the feedback
      > vector indefinetly. This CL adds a pass the GC to detect JSFunctions that
      > need to be reset, and performs the reset at the end of GC.
      >
      > BUG=v8:8395
      >
      > Change-Id: I3de8655aff9ff80f912b4fd51dee43eb98cfd519
      > Reviewed-on: https://chromium-review.googlesource.com/c/1393292
      > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58775}
      
      Bug: v8:8395
      Change-Id: I9bc84b62332575a080561c51f08b699b91e41e4a
      Reviewed-on: https://chromium-review.googlesource.com/c/1414859
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58924}
      d5e63b03
    • Ulan Degenbaev's avatar
      Reland "[heap] Remove bailout marking worklist." · 8b3fbe1d
      Ulan Degenbaev authored
      This reverts commit 13e07389.
      
      Original change's description:
      > [heap] Remove bailout marking worklist.
      >
      > The concurrent marker can now process all objects.
      > This patch also eagerly visits the objects that undergo layout
      > changes. This is because previously such objects were pushed
      > onto the bailout worklist, which is gone now.
      > To preserve the incremental step accounting, the patch introduces
      > a new GC tracer scope called MC_INCREMENTAL_LAYOUT_CHANGE.
      >
      > Bug: v8:8486
      > Change-Id: Ic1c2f0d4e2ac0602fc945f3258af9624247bd65f
      > Reviewed-on: https://chromium-review.googlesource.com/c/1386486
      > Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58712}
      
      Change-Id: I85c99837819f6971c248198bd51ad40eebdb4fac
      Reviewed-on: https://chromium-review.googlesource.com/c/1417595Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58913}
      8b3fbe1d
  6. 15 Jan, 2019 1 commit
  7. 14 Jan, 2019 3 commits
  8. 10 Jan, 2019 1 commit
    • Ulan Degenbaev's avatar
      [heap] Remove bailout marking worklist. · 68a8bdd8
      Ulan Degenbaev authored
      The concurrent marker can now process all objects.
      This patch also eagerly visits the objects that undergo layout
      changes. This is because previously such objects were pushed
      onto the bailout worklist, which is gone now.
      To preserve the incremental step accounting, the patch introduces
      a new GC tracer scope called MC_INCREMENTAL_LAYOUT_CHANGE.
      
      Bug: v8:8486
      Change-Id: Ic1c2f0d4e2ac0602fc945f3258af9624247bd65f
      Reviewed-on: https://chromium-review.googlesource.com/c/1386486
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58712}
      68a8bdd8
  9. 28 Dec, 2018 1 commit
    • Ulan Degenbaev's avatar
      [heap] Support fixed arrays with progress bar in the concurrent marker · 7ca8acd0
      Ulan Degenbaev authored
      Currently the concurrent marker visits any fixed array in one go
      ignoring the progress bar and does not expect seeing black arrays
      in the worklist. For this reason, if the main thread marker starts
      visiting a large array with the progress bar, then it has to re-push
      the array in the bailout worklist. So all subsequent visitations of
      the array happen on the main thread.
      
      This patch makes the progress bar thread-safe and allows the
      concurrent marker to visit arrays in chunks.
      
      Change-Id: I5e8867077ed2908b7f9c5d8bde34d0401f7fe446
      Reviewed-on: https://chromium-review.googlesource.com/c/1385164
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58484}
      7ca8acd0
  10. 26 Dec, 2018 1 commit
  11. 24 Dec, 2018 1 commit
  12. 20 Dec, 2018 2 commits
  13. 19 Dec, 2018 2 commits
  14. 17 Dec, 2018 1 commit
  15. 11 Dec, 2018 1 commit
    • Ross McIlroy's avatar
      [SFI] Add support for flushing old Bytecode from SharedFunctionInfos. · a55803a1
      Ross McIlroy authored
      This change makes the SFI to bytecode link pseudo-weak. The marking visitors
      check whether the bytecode is old, and if so, don't mark it and instead
      push the SFI onto a bytecode_flushing_candidates worklist. Once marking
      is complete, this list is walked, and for any of the candidates who's bytecode
      has not been marked (i.e., is only referenced by the shared function info),
      the bytecode is flushed and the SFI has the function data replaced with
      an UncompiledData (which overwrites the flushed bytecode array).
      
      Since we don't track JSFunctions, these can still think the underlying
      function is compiled, and so calling them will invoke
      InterpreterEntryTrampoline. As such, logic is added to
      InterpreterEntryTrampoline to detect flushed functions, and enter
      CompileLazy instead.
      
      BUG=v8:8395
      
      Change-Id: I4afba79f814ca9a92dec45d59485935845a6669d
      Reviewed-on: https://chromium-review.googlesource.com/c/1348433
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58158}
      a55803a1
  16. 10 Dec, 2018 1 commit
  17. 08 Dec, 2018 1 commit
  18. 07 Dec, 2018 1 commit
  19. 06 Dec, 2018 1 commit
  20. 29 Nov, 2018 3 commits
  21. 26 Nov, 2018 2 commits
  22. 25 Nov, 2018 1 commit
  23. 24 Nov, 2018 2 commits
  24. 23 Nov, 2018 2 commits
  25. 22 Nov, 2018 2 commits
  26. 16 Nov, 2018 1 commit
  27. 13 Nov, 2018 1 commit