1. 20 Apr, 2021 1 commit
  2. 07 Apr, 2021 1 commit
  3. 22 Sep, 2020 1 commit
    • Ulan Degenbaev's avatar
      [heap] Fix regressions in the configuration without concurrent marking · fbd3834e
      Ulan Degenbaev authored
      Building and running tests with v8_enabled_concurrent_marking=false
      currently produces two failures:
      1) Segmentation fault on attempt to mark a read-only object.
         This is fixed by changing MarkBit::Set to be a no-op if the object
         is already marked (which is the case for the readonly space).
      2) Missing write-barrier due to bogus condition in the bailout.
         The barrier can be skipped only if the host object is not marked yet.
      
      This also disables two concurrent allocation tests that rely on
      concurrent marking write-barrier.
      
      Bug: v8:10875
      
      Change-Id: Ib3a238fc34c8f20c697470e0bd4ac427fb4bdc0e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2421816Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70041}
      fbd3834e
  4. 21 Aug, 2020 1 commit
    • Ulan Degenbaev's avatar
      Reland "[heap] Add concurrent marking write barrier" · e0ad32ce
      Ulan Degenbaev authored
      This is a reland of 1dd7f3a9
      
      Original change's description:
      > [heap] Add concurrent marking write barrier
      > 
      > A LocalHeap creates and owns an instance of MarkingBarrier. A pointer to
      > the marking barrier is set to a thread_local variable for a quick access.
      > 
      > WriteBarrier::MarkingSlow fetches the thread_local variable and invokes
      > the write barrier if it is set. Otherwise, it invokes the main thread
      > heap()->marking_barrier().
      > 
      > Each marking barrier has its own local marking worklist that is
      > published during scavenge (for updating pointers) and at finalization
      > of incremental marking.
      > 
      > Typed-slot recording does not work yet because it is not thread-safe.
      > It will be fixed in a subsequent CL.
      > 
      > Bug: v8:10315
      > Change-Id: I221a906436cd91e7405a253ce0eb06cf68046f2c
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2354809
      > Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#69448}
      
      Bug: v8:10315
      Change-Id: I155bb0aadd53a5333672fb085b33d8da86f3f336
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2364509Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69517}
      e0ad32ce
  5. 18 Aug, 2020 2 commits
    • Maya Lekova's avatar
      Revert "[heap] Add concurrent marking write barrier" · 2f45e41a
      Maya Lekova authored
      This reverts commit 1dd7f3a9.
      
      Reason for revert: Breaks TSAN - https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN/32846?
      
      Original change's description:
      > [heap] Add concurrent marking write barrier
      > 
      > A LocalHeap creates and owns an instance of MarkingBarrier. A pointer to
      > the marking barrier is set to a thread_local variable for a quick access.
      > 
      > WriteBarrier::MarkingSlow fetches the thread_local variable and invokes
      > the write barrier if it is set. Otherwise, it invokes the main thread
      > heap()->marking_barrier().
      > 
      > Each marking barrier has its own local marking worklist that is
      > published during scavenge (for updating pointers) and at finalization
      > of incremental marking.
      > 
      > Typed-slot recording does not work yet because it is not thread-safe.
      > It will be fixed in a subsequent CL.
      > 
      > Bug: v8:10315
      > Change-Id: I221a906436cd91e7405a253ce0eb06cf68046f2c
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2354809
      > Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#69448}
      
      TBR=ulan@chromium.org,dinfuehr@chromium.org
      
      Change-Id: I9719d565aaa313cd23f5e759dcef1246f475eb46
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:10315
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2362689Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Commit-Queue: Maya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69451}
      2f45e41a
    • Ulan Degenbaev's avatar
      [heap] Add concurrent marking write barrier · 1dd7f3a9
      Ulan Degenbaev authored
      A LocalHeap creates and owns an instance of MarkingBarrier. A pointer to
      the marking barrier is set to a thread_local variable for a quick access.
      
      WriteBarrier::MarkingSlow fetches the thread_local variable and invokes
      the write barrier if it is set. Otherwise, it invokes the main thread
      heap()->marking_barrier().
      
      Each marking barrier has its own local marking worklist that is
      published during scavenge (for updating pointers) and at finalization
      of incremental marking.
      
      Typed-slot recording does not work yet because it is not thread-safe.
      It will be fixed in a subsequent CL.
      
      Bug: v8:10315
      Change-Id: I221a906436cd91e7405a253ce0eb06cf68046f2c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2354809
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69448}
      1dd7f3a9
  6. 11 Aug, 2020 1 commit
    • Ulan Degenbaev's avatar
      [heap] Split marking worklist into global worklist and local worklists · 28133adc
      Ulan Degenbaev authored
      This is the first step in refactoring Worklist to allow arbitrary
      number of local worklists with private segments:
      - Introduce MarkingWorklistImpl<> which will eventually replace
        (and will be renamed to) Worklist.
      - MarkingWorklistImpl<> owns the global pool of segments but does not
        keep track of private segments.
      - MarkingWorklistImpl<>::Local owns private segments and can be
        constructed dynamically on background threads.
      - Rename the existing MarkingWorklistsHolder to MarkingWorklists.
      - Rename the existing MarkingWorklists to MarkingWorklists::Local.
      - Rename the existing marking_workists_holder to marking_worklists.
      - Rename the existing marking_worklists to local_marking_worklists.
      
      Design doc: https://bit.ly/2XMtjLi
      Bug: v8:10315
      
      Change-Id: I9da34883ad34f4572fccd40c51e51eaf50c617bc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2343330Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#69330}
      28133adc
  7. 14 Jul, 2020 1 commit
  8. 07 Jul, 2020 1 commit