• 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
ast-source-ranges.h 11.5 KB