1. 21 Jul, 2020 1 commit
  2. 10 Mar, 2020 1 commit
  3. 03 Mar, 2020 1 commit
  4. 03 Feb, 2020 1 commit
  5. 16 Jan, 2020 1 commit
  6. 14 Jan, 2020 1 commit
  7. 05 Dec, 2019 1 commit
    • Ulan Degenbaev's avatar
      [heap] Decouple the lifetime of a TracedNode from the target object · d7160560
      Ulan Degenbaev authored
      Currently a TracedNode of a TracedReference is freed only if its target
      V8 object is unreachable. This is problematic for TracedNodes created for
      long-living (or immortal) V8 objects and leads to memory leaks.
      
      This CL adds logic for collecting unreachable TracedNodes:
      1) Each TracedNode gets a markbit. Initially the markbit is set (i.e.
         we have black allocation for TracedNodes).
      2) During marking RegisterEmbedderReference sets the markbit of the
         corresonding TracedNode.
      3) In the atomic pause of Mark-Compact when TracedNodes are iterated,
         we check the markbits and free TracedNodes with cleared markbits.
         After this processing all markbits are cleared for the next GC.
      
      Note that the new logic does not apply to TracedNode that have
      callbacks and/or destructors.
      
      Bug: chromium:1029738
      Change-Id: I38e76a8b4a84170793998988b1a7962e40874428
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1948722
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65347}
      d7160560
  8. 13 Sep, 2019 1 commit
  9. 29 Aug, 2019 1 commit
  10. 23 Aug, 2019 1 commit
    • Michael Lippautz's avatar
      api,heap: Avoid reaching out to embedder memory on TracedGlobal reset · 0af80a37
      Michael Lippautz authored
      Avoid clearing the memory on the embedder-side of a TracedGlobal handle.
      
      When using destructors in TracedGlobal this is safe as long as the embedder
      reports the handle on tracing GCs. If the embedder does not report a handle it
      is assumed that the containing object is dead as well.
      
      Without using destructors the same argument holds for tracing GCs. In addition,
      embedders using the optimization of clearing references on non-tracing GCs
      are expected to clear the reference in ResetHandleInNonTracingGC.
      
      It is suggested that only expert embedders make use of (a) no destructors and
      (b) IsRootForNonTracingGC.
      
      Change-Id: Ia417c0eb0860094fcaa554e7046d38abac905714
      Bug: chromium:995684
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1763539
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#63362}
      0af80a37
  11. 27 May, 2019 1 commit
    • Clemens Hammacher's avatar
      [cleanup] Replace simple typedefs by using · a335f2ae
      Clemens Hammacher authored
      This replaces all typedefs that define types and not functions by the
      equivalent "using" declaration.
      
      This was done mostly automatically using this command:
      ag -l '\btypedef\b' src test | xargs -L1 \
           perl -i -p0e 's/typedef ([^*;{}]+) (\w+);/using \2 = \1;/sg'
      
      Patchset 2 then adds some manual changes for typedefs for pointer types,
      where the regular expression did not match.
      
      R=mstarzinger@chromium.org
      TBR=yangguo@chromium.org, jarin@chromium.org
      
      Bug: v8:9183
      Change-Id: I6f6ee28d1793b7ac34a58f980b94babc21874b78
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1631409
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61849}
      a335f2ae
  12. 23 May, 2019 3 commits
  13. 14 May, 2019 1 commit
  14. 04 Apr, 2019 1 commit
  15. 18 Mar, 2019 1 commit
  16. 11 Feb, 2019 1 commit
  17. 05 Feb, 2019 1 commit
  18. 29 Jan, 2019 1 commit
    • Michael Lippautz's avatar
      [api, global-handles] Add TracedGlobal · 76c93685
      Michael Lippautz authored
      TracedGlobal integrates with the use case of EmbedderHeapTracer and replaces
      regular weak Global or Persistent nodes for such cases. This allows to simplify
      the case for regular weak handles in a sense that they follow regular weak
      semantics (if the underlying object is otherwise unreachable the weak handle
      will be reset).
      
      TracedGlobal requires slightly different semantics in the sense that it can be
      required to keep them alive on Scavenge garbage collections because there's a
      transitive path that is only known when using the EmbedderHeapTracer.
      TracedGlobal accomodates that use case.
      
      TracedGlobal follows move semantics and can thus be used in regular std
      containers without wrapping data structure.
      
      The internal state uses 20% less memory and allows for only iterating those
      nodes when necessary. The design trades the virtual call when iterating
      interesting persistents in the GC prologue with calling out through the
      EmbedderHeapTracer for each node which is also a virtual call. There is one less
      iteration over the set of handles required though and the design is robust
      against recursive GCs that mutate the embedder state during the prologue
      callback.
      
      Bug: chromium:923361
      Change-Id: Idbacfbe4723cd12af9de21058a4792e51dc4df74
      Reviewed-on: https://chromium-review.googlesource.com/c/1425523
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59183}
      76c93685
  19. 24 Jan, 2019 1 commit
  20. 23 Jan, 2019 2 commits
  21. 22 Jan, 2019 4 commits
  22. 21 Jan, 2019 1 commit
  23. 18 Jan, 2019 1 commit
  24. 08 Jan, 2019 2 commits
  25. 26 Dec, 2018 1 commit
  26. 29 Nov, 2018 1 commit
  27. 16 Nov, 2018 1 commit
  28. 07 Nov, 2018 1 commit
  29. 31 Oct, 2018 3 commits
  30. 17 Oct, 2018 1 commit
  31. 16 Oct, 2018 1 commit