• Leszek Swirski's avatar
    [compiler-dispatcher] Move to full SFI keying · 14097e62
    Leszek Swirski authored
    Remove the concept of JobId from LazyCompileDispatcher, and make SFIs
    the canonical id for these jobs.
    
    This has several consequences:
    
      * We no longer split enqueing a job and registering a SFI with that
        job. We did this previously because we could not allocate SFIs in
        the Parser -- now with LocalHeap we can, so we do.
      * We remove the separate Job vector, and make the SFI IdentityMap
        hold pointers to Jobs directly. This requires a small amount of
        extra care to deallocate Jobs when removing them from the map,
        but it means not having to allocate new global handles for jobs.
      * The SFI is passed into the BackgroundCompileTask instead of the
        script, so our task finalization doesn't need the SFI anymore.
      * We no longer need to iterate ParallelTasks after compiling (to
        register SFIs), so we can get rid of ParallelTasks entirely and
        access the dispatcher directly from the parser.
    
    There are a few drive-bys since we're touching this code:
    
      * Jobs are move to have a "state" variable rather than a collection
        of bools, for stricter DCHECKing.
      * There's no longer a set of "currently running" jobs, since this
        was only used to check if a job is running, we can instead inspect
        the job's state directly.
      * s/LazyCompilerDispatcher/LazyCompileDispatcher/g
    
    Change-Id: I85e4bd6db108f5e8e7fe2e919c548ce45796dd50
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3259647
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarVictor Gomes <victorgomes@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#77712}
    14097e62
string.cc 63.9 KB