1. 13 Jul, 2022 1 commit
  2. 04 Jul, 2022 1 commit
  3. 30 Jun, 2022 2 commits
  4. 24 Jun, 2022 1 commit
  5. 23 Jun, 2022 1 commit
  6. 22 Jun, 2022 2 commits
  7. 20 Jun, 2022 1 commit
  8. 15 Jun, 2022 1 commit
  9. 10 Jun, 2022 1 commit
  10. 08 Jun, 2022 1 commit
  11. 01 Jun, 2022 2 commits
  12. 31 May, 2022 1 commit
    • Joyee Cheung's avatar
      Revert "[heap] pre-populate the single_character_string_cache" · 4bdbccc3
      Joyee Cheung authored
      This reverts commit 07e11a64.
      
      Reason for revert: caused regressions and heap verification failures
      
      Bug: chromium:1330410, chromium:1330408, chromium:1330413
      
      Original change's description:
      > [heap] pre-populate the single_character_string_cache
      >
      > This simplifies the code and removes the runtime overhead of
      > spontaneously adding strings to the cache.
      >
      > Bug: v8:12718
      > Change-Id: I2ed49bd82e3baf2563eeb8f463be72c0308c52c5
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3616553
      > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
      > Reviewed-by: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
      > Commit-Queue: Joyee Cheung <joyee@igalia.com>
      > Cr-Commit-Position: refs/heads/main@{#80803}
      
      Bug: v8:12718
      Change-Id: I569fea9e34effd57c9e7c65190cf5b4ec0b0623b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3679680
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Owners-Override: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80870}
      4bdbccc3
  13. 30 May, 2022 1 commit
  14. 28 May, 2022 2 commits
  15. 24 May, 2022 1 commit
  16. 19 May, 2022 1 commit
  17. 17 May, 2022 1 commit
  18. 13 May, 2022 1 commit
  19. 09 May, 2022 1 commit
  20. 03 May, 2022 2 commits
  21. 25 Apr, 2022 1 commit
  22. 22 Apr, 2022 2 commits
  23. 04 Apr, 2022 1 commit
  24. 01 Apr, 2022 1 commit
    • Dominik Inführ's avatar
      [heap] Remove sweeping_slot_set_ from MemoryChunk · ca505562
      Dominik Inführ authored
      Since the new space is always empty after a full GC, the old-to-new
      remembered set is also always empty after a full GC. This means we can
      get rid of the sweeping_slot_set_.
      
      This slot set was used to allow the main thread to insert into the
      old-to-new remembered set non-atomically. The sweeping slot set was
      owned by the sweeper, which deletes slots in free memory from it. The
      main thread would start with an empty old-to-new remembered set. After
      sweeping both slot sets are merged again.
      
      The sweeper now needs to behave differently during a GC. When sweeping
      a page during full GC, the sweeper needs to delete old-to-new-slots in
      free memory.
      
      Outside of the GC the sweeper isn't allowed to remove from the
      old-to-new slots anymore. This would race with the main thread that adds
      slots to that remembered set while the sweeper is running. However,
      there should be no recorded slots in free memory. DCHECKing this is
      tricky though, because we would need to synchronize with the main
      thread right-trimming objects and at least String::MakeThin only deletes
      slots after the map release-store.
      
      Bug: v8:12760
      Change-Id: Ic0301851a714e894c3040595f456ab93b5875c81
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3560638Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79713}
      ca505562
  25. 25 Mar, 2022 1 commit
  26. 24 Mar, 2022 1 commit
    • Benedikt Meurer's avatar
      [debug] Hold on to promises weakly from the debugger's promise stack. · 3eb6b7ac
      Benedikt Meurer authored
      The debugger maintains a stack of promises used for catch prediction
      with promise builtins and async functions. Previously this stack would
      hold on to the individual promises strongly, and subtle bugs that lead
      to not properly cleaning up the stack in some corner cases would often
      lead to significant memory issues (e.g. leaking whole iframes).
      
      This refactors the PromiseOnStack to be
      
        (a) on the V8 heap, rather than allocating C++ structs with global
            handles pointing to the promises, and
        (b) hold on to the promises only weakly.
      
      While this will not guarantee proper promise stack management, it will
      at least ensure that edge cases don't lead to catastrophic (debugger
      only) leaks.
      
      Bug: chromium:1292063
      Change-Id: I9c293ca2032de3a59e1e9624f132d37187805567
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3545176
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarSimon Zünd <szuend@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79594}
      3eb6b7ac
  27. 16 Mar, 2022 1 commit
  28. 14 Mar, 2022 1 commit
  29. 09 Mar, 2022 1 commit
    • Dominik Inführ's avatar
      [heap] Improve accounting of PagedSpace::CommittedPhysicalMemory() · 25981026
      Dominik Inführ authored
      Instead of using the high water mark for determining this metric, we use
      a bitset for all active/used system pages on a V8 heap page. Each time
      when allocating a LAB on a page, we add the pages of that memory range
      to that bitset. During sweeping we rebuild that bitset from scratch and
      replace it with the old one in case free pages are discarded by the GC.
      We DCHECK here that the sweeper only ever removes pages. This has the
      nice benefit of ensuring that we don't miss any allocations (like we
      do now for concurrent allocations).
      
      CommittedPhysicalMemory for a page is then calculated by counting the
      set bits in the bitset and multiplying it with the system page size.
      This should be simpler to verify and track the "real" effective size
      more precisely.
      
      One case where we are partially less precise than the current
      implementation is for LABs. In order to reduce complexity we now treat
      all pages of a LAB allocation as active immediately. In the current
      implementation we tried to only account the actual used part of the LAB
      when changing the LAB later. This is more complex to track correctly
      but also doesn't account the currently used LAB in effective size.
      
      Change-Id: Ia83df9ad5fbb852f0717c4c396b5074604bd21e9
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3497363Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79428}
      25981026
  30. 08 Mar, 2022 1 commit
  31. 04 Mar, 2022 1 commit
  32. 25 Feb, 2022 2 commits
  33. 23 Feb, 2022 1 commit