• 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
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...