1. 04 Apr, 2022 1 commit
  2. 21 Mar, 2022 1 commit
  3. 09 Mar, 2022 1 commit
  4. 04 Mar, 2022 1 commit
    • Camillo Bruni's avatar
      [tools] Improve gcmole part II · ecc3cd25
      Camillo Bruni authored
      Prepare gcmole.cc for the next update:
      - Print possible GC locations when discovering stale/dead variables
      - Make error messages less confusing for the modern V8 engineer
      - Prepare gcmole to read suspects.allowlist instead of .whitelist
      - Use more readable variable names
      - Only log non-found types with --verbose
      - Change the currently unusued gccauses format in gcmole.py and
        support loading it back in gcmole.cc
      - Implemented first basic gc call-chain printing (disabled by default)
      
      GCmole packaging:
      - Add debug mode to bootstrap.sh build script
      - Update gcmole.py run instructions in bootstrap.sh and package.sh
      
      Bug: v8:10009
      Change-Id: I369d48baa2980455d2e8f57e7a803d0384fe83f1
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3480095Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79357}
      ecc3cd25
  5. 03 Mar, 2022 1 commit
    • Camillo Bruni's avatar
      [tools] Improve gcmole part I: command line · 4db43bfa
      Camillo Bruni authored
      - Convert gcmole to python3-ish code
        - use local Path implementation for future full migration
      - Use optparse and explicit arguments for gcmole
        - Add explicit directories flags
        - Use backwards compatible env vars as fallbacks
      - Add gn target v8_gcmole_files to avoid issues with missing or
        incompatible generated files
      
      Drive-by-fixes for running gcmole without ignored files:
      - Disable gcmole in Isolate::UnwindAndFindHandle
      - Partially disable gcmole in V8HeapExplorer::AddEntry
      
      Bug: v8:10009
      Change-Id: I5b4d1c6554db300190226361b6c518419109ff3d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3497320Reviewed-by: 's avatarLiviu Rau <liviurau@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79348}
      4db43bfa
  6. 24 Feb, 2022 1 commit
  7. 16 Feb, 2022 1 commit
  8. 28 Oct, 2021 1 commit
  9. 26 Oct, 2021 2 commits
  10. 25 Oct, 2021 1 commit
  11. 23 Oct, 2021 1 commit
  12. 21 Sep, 2021 1 commit
    • Michael Lippautz's avatar
      Revert "[base] Replace base::Optional with Abseil" · d67f0606
      Michael Lippautz authored
      This reverts commit f2e25f8a.
      
      Reason for revert: Breaks GCC 8.4.0 compilation, see bug.
      
      Original change's description:
      > [base] Replace base::Optional with Abseil
      >
      > Change base::Optional to an alias of absl::optional. Eventually we
      > should remove it entirely.
      >
      > Bug: v8:11006
      > Change-Id: I687d44cc7e7cd0a49a84bcc207231eb6808eef2d
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2476318
      > Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Cr-Commit-Position: refs/heads/main@{#76913}
      
      Bug: v8:11006, v8:12252
      Change-Id: I8048dee676a36551d15f25a31d1e171dae00d975
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3173672
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Auto-Submit: Michael Lippautz <mlippautz@chromium.org>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Cr-Commit-Position: refs/heads/main@{#76976}
      d67f0606
  13. 17 Sep, 2021 1 commit
  14. 05 Jul, 2021 1 commit
  15. 02 Mar, 2021 1 commit
  16. 01 Mar, 2021 1 commit
    • Dominik Inführ's avatar
      [heap] Safepointing with an atomic state · 17cba4f0
      Dominik Inführ authored
      To improve performance of parking, keep the thread state in an atomic
      variable instead of protecting it with a mutex.
      
      However the mutex was used e.g. to force Unpark() to block while the
      safepoint operation was still running. Therefore the safepoint algorithm
      has to change as well.
      
      Park() and Unpark() use CAS operation to transition the state.
      Safepoint() uses a relaxed load for checking whether a safepoint was
      requested. Since Safepoint(), Park() and Unpark() all have a slow path,
      there is no need for busy-waiting on the main thread.
      
      We need two more ThreadStates:
      * SafepointRequested: This state is set by GlobalSafepoint to force
          Running threads into the slow path on Safepoint() and Park(). This
          state also replaces the separate atomic<bool> safepoint_requested_
          field we used before.
      * ParkedSafepoint: This state is set by GlobalSafepoint as well to force
          parked threads into the slow path on Unpark().
      
      When stopping all threads, GlobalSafepoint transitions states from
      Running --> SafepointRequested and Parked --> ParkedSafepoint to force
      the slow path for all three methods. After performing the transition
      for each thread we know the exact number of Running threads and wait
      until each of them either reached a safepoint or parked itself.
      
      Design doc: https://docs.google.com/document/d/1p9klWyqT_AScAnK_PdHZTcNhZGzoBiYWPkUciIh2C58/edit?usp=sharing
      
      Bug: chromium:1177144, v8:10315
      Change-Id: I8697da915c7d18e2fb941f1bedf6181226408feb
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2704075Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73089}
      17cba4f0
  17. 03 Feb, 2021 1 commit
  18. 12 Jan, 2021 1 commit
    • Camillo Bruni's avatar
      [tools] Add DisableGCMole scope · d16a2a68
      Camillo Bruni authored
      Make sure gcmole detects issue in DisallowGarbageCollection scopes.
      
      DisallowGarbageCollection is widely used in the codebase to document
      code that doesn't allocate. However, this has the rather unexpected
      side-effect that gcmole is not run when such a scope is active.
      
      This CL changes the default behavior of gcmole to run even with
      DisallowGarbageCollection scopes present. This will give us the best
      results of both worlds, dynamic checks by the fuzzer, and static
      analysis by gcmole.
      
      To allow crazy local raw pointer operations there is a new
      DisableGCMole scope that explicitly disables gcmole.
      
      Change-Id: I0a78fb3b4ceaad35be9bcf7293d917a41f90c91f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615419Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Commit-Queue: Camillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72039}
      d16a2a68
  19. 04 Dec, 2020 1 commit
    • Leszek Swirski's avatar
      [gcmole] Improve performance · 18138f26
      Leszek Swirski authored
      Improve the performance of gcmole by
      
        * Precompiling the regexes in GCSuspectsCollector.Resolve
        * Merging those regexes into a single regex, using '|'
        * Changing multiprocess clang plugin invocation to threaded (running
          the plugin releases the GIL so this can efficiently thread). This
          uses a simple worker pool with a single work queue.
        * Change clang plugin invocation loop to yield after each invocation.
          This pipelines the dump-callees plugin and GCSuspectsCollector
          Parse/Resolve, so that the parse can happen while waiting for other
          callee dumps to finish.
      
      Change-Id: Ib9fca70dbcfd2f9d1aebc8bd11aa1d1f7d34e24a
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2562242Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Reviewed-by: 's avatarLiviu Rau <liviurau@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71617}
      18138f26
  20. 26 Nov, 2020 1 commit
  21. 20 Nov, 2020 1 commit
  22. 18 Nov, 2020 1 commit
  23. 17 Nov, 2020 1 commit
    • Leszek Swirski's avatar
      [asserts] Add combination assert scopes · 076687ab
      Leszek Swirski authored
      Add a "combination" assert scope class, which combines multiple existing
      assert scopes.  This will allow scopes with functional overlap, e.g.
      DisallowGarbageCollection and DisallowHeapAllocation, to share an assert
      type rather than rather than requiring users to remember to set both. To
      demonstrate this, this redefines DisallowGarbageCollection to a
      combination of DisallowHeapAllocation and a new DisallowSafepoints, and
      some of the DCHECKs checking both are simplified to only check one or
      the other, as appropriate.
      
      The combination classes become subclasses of the existing assert scopes,
      so that they can be used in their place as e.g. a function parameter,
      e.g. DisallowGarbageCollection can be passed to a function expecting
      const DisallowHeapAllocation&.
      
      As a drive-by, this also changes the per-thread assert scopes to use a
      bitmask, rather than a bool array, to store their per-thread data. The
      per-isolate scopes already used a bitmask, so this unifies the
      behaviour between the two.
      
      Change-Id: I209e0a56f45e124c0ccadbd9fb77f39e070612fe
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2534814
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#71231}
      076687ab
  24. 16 Nov, 2020 1 commit
  25. 27 Oct, 2020 2 commits
  26. 26 Oct, 2020 1 commit
  27. 04 Oct, 2020 1 commit
  28. 25 Sep, 2020 1 commit
    • Tobias Tebbi's avatar
      Reland "[torque] refactor: use -tq only in filenames derived from .tq files" · 21b58516
      Tobias Tebbi authored
      This is a reland of 64caf2b0
      
      Original change's description:
      > [torque] refactor: use -tq only in filenames derived from .tq files
      >
      > This is to establish a naming rule for Torque-generated files:
      > - If the file is called foo/bar-tq..., then it is derived from a
      >   file foo/bar.tq
      > - Otherwise it doesn't belong to a specific .tq file.
      >
      > So far, we attached -tq to all Torque-generated file names, where it
      > sometimes corresponded to a .tq file name and sometimes not.
      > It is not necessary to add -tq to file names to indicate that they are
      > Torque-generated, since they are already in a directory called
      > torque-generated, and we always refer to them as
      > "torque-generated/filename", so there is no confusion even though some
      > files now have the same name as a corresponding hand-written file, for
      > example factory.cc.
      >
      > TBR: hpayer@chromium.org
      > Bug: v8:7793
      > Change-Id: Ie172babad1fc7422fd1059c48f5dafaa53e50c8b
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2414218
      > Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#70060}
      
      Bug: v8:7793
      TBR: hpayer@chromium.org jgruber@chromium.org
      Change-Id: I6c492bc64aee1ff167e7ef401825eca9097a7f38
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2431565
      Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
      Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#70137}
      21b58516
  29. 15 Sep, 2020 1 commit
  30. 14 Sep, 2020 1 commit
  31. 24 Jun, 2020 1 commit
  32. 22 Jun, 2020 1 commit
  33. 19 Jun, 2020 1 commit
  34. 18 May, 2020 1 commit
  35. 13 May, 2020 1 commit
  36. 08 Jan, 2020 1 commit
    • Leszek Swirski's avatar
      [gcmole] Update whitelist for src/heap · 38e7b6b3
      Leszek Swirski authored
      Most dead variable warnings in GCMole are false positives, either from
      failing to detect that TryEvacuateObject returning false means it didn't
      allocate, or a regex error thinking that GarbageCollectionReasonToString
      causes garbage collection (because the mangled version is something like
      GarbageCollectionReasonToString[...]GarbageCollectionReason, and that
      matches /Collect.*Garbage/).
      
      Update the whitelist and fix the "Collect.*Garbage" regex to only look
      at the function name.
      
      Bug: v8:9985
      Change-Id: I62284e97e4975a6a87616d1d535b2ac7958d17bb
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1989829
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65622}
      38e7b6b3
  37. 13 Dec, 2019 1 commit
  38. 26 Nov, 2019 1 commit