1. 10 Jan, 2020 1 commit
  2. 16 May, 2019 2 commits
    • Jakob Gruber's avatar
      [coverage] Enable optimizations in block coverage modes · 8c33e289
      Jakob Gruber authored
      Now that function counts are based on dedicated call counters instead
      of FeedbackVector::invocation_count, we can enable optimizations for
      block coverage modes.
      
      This significantly speeds up V8 with enabled coverage:
      
      Before this CL, the web-tooling-benchmark regressed by 70% (block
      count coverage vs. no coverage).  With this CL, the regression is
      reduced to 40%.
      
      Bug: v8:6000,v8:9148
      Change-Id: I6bb538bd66f32f016c66c1d1996bce3b25958232
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1615241
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61582}
      8c33e289
    • Jakob Gruber's avatar
      [coverage] Add dedicated FunctionLiteral counters · 3002ff44
      Jakob Gruber authored
      Prior to this CL, call counts at function scope were taken from the
      FeedbackVector::invocation_count field. This had two major drawbacks:
      1. for generator functions, these count the number of resumptions
      instead of the number of calls; and 2. the invocation count is not
      maintained in optimized code.
      
      The solution implemented here is to add a dedicated call counter at
      function scope which is incremented exactly once each time the
      function is called.
      
      A minor complication is that our coverage output format expects
      function-scope counts in the dedicated CoverageFunction object, and
      not as a CoverageBlock. Thus function-scope block counts are initially
      marked with magic positions, and later recognized and rewritten during
      processing.
      
      This CL thus fixes reported generator function call counts and enables
      optimizations in block coverage modes (more to come in a follow-up).
      
      Drive-by: Don't report functions with empty source ranges.
      
      Bug: v8:6000,v8:9148,v8:9212
      Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
      Change-Id: Idbe5edb35a595cf12b6649314738ac00efd173b8
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613996
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#61574}
      3002ff44
  3. 05 Feb, 2019 1 commit
  4. 25 Jan, 2019 1 commit
  5. 21 Dec, 2018 1 commit
    • Jakob Gruber's avatar
      [coverage] Rework continuation counter handling · 9365d090
      Jakob Gruber authored
      This changes a few bits about how continuation counters are handled.
      
      It introduces a new mechanism that allows removal of a continuation
      range after it has been created. If coverage is enabled, we run a first
      post-processing pass on the AST immediately after parsing, which
      removes problematic continuation ranges in two situations:
      
      1. nested continuation counters - only the outermost stays alive.
      2. trailing continuation counters within a block-like structure are
         removed if the containing structure itself has a continuation.
      
      R=bmeurer@chromium.org, jgruber@chromium.org, yangguo@chromium.org
      
      Bug: v8:8381, v8:8539
      Change-Id: I6bcaea5060d8c481d7bae099f6db9f993cc30ee3
      Reviewed-on: https://chromium-review.googlesource.com/c/1339119Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58443}
      9365d090
  6. 31 May, 2018 2 commits
  7. 20 Nov, 2017 1 commit
  8. 28 Aug, 2017 1 commit
  9. 07 Aug, 2017 1 commit
  10. 02 Aug, 2017 1 commit
  11. 31 Jul, 2017 1 commit
    • Jakob Gruber's avatar
      [coverage] Don't skip collection if invocation_count is zero · 793053fd
      Jakob Gruber authored
      Function-granularity coverage skips functions that are both uncovered
      and have an uncovered parent. This optimization needs to be tweaked once
      block coverage and incremental collection is in play, as it is possible
      to have a function with invocation_count == 0 (i.e. uncovered at
      function granularity) that still has relevant block-granularity
      coverage.
      
      Bug: v8:6000
      Change-Id: I4cc81b8a6935aa58e29d383ed4fa749cbfe69352
      Reviewed-on: https://chromium-review.googlesource.com/589508Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#46991}
      793053fd
  12. 17 Jul, 2017 1 commit
  13. 14 Jul, 2017 1 commit
  14. 07 Jul, 2017 1 commit
  15. 06 Jul, 2017 1 commit
  16. 23 Jun, 2017 2 commits
  17. 24 Mar, 2017 1 commit
  18. 23 Mar, 2017 3 commits
  19. 21 Mar, 2017 1 commit
  20. 20 Mar, 2017 1 commit
  21. 10 Mar, 2017 1 commit
  22. 08 Mar, 2017 1 commit
  23. 06 Mar, 2017 1 commit
  24. 25 Feb, 2017 1 commit
  25. 22 Feb, 2017 1 commit