• Leszek Swirski's avatar
    [compiler] Post compile tasks from ignition instead of the parser · 6b2fa4c1
    Leszek Swirski authored
    Posting compile tasks from the parser has several issues:
    
      1. We don't know how many functions there will be total, so we can't
         yet allocate shared_function_infos array on the Script
      2. Without this array, inner function compiles can't look up their own
         inner functions during bytecode finalization, so we can't run that
         finalization before script parse completes
      3. Scope analysis can't have run yet, so we can only post top-level
         function tasks and if we allocate SharedFunctionInfos early they
         are forced into a bit of a limbo state without an outer ScopeInfo.
    
    Instead, we can post compile tasks during bytecode generation. Then, the
    script parse is guaranteed to have completed, so we'll have a
    shared_function_infos array and we will have allocated ScopeInfos
    already. This also opens the door for posting tasks for compiling more
    inner functions than just top-level, as well as generating better code
    for functions/methods that reference same-script top-level
    let/const/class.
    
    Bug: chromium:1267680
    Change-Id: Ie1a3a3c6f1b264c4ef28cd4763bfc6dc08f45d4d
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3277884
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#77894}
    6b2fa4c1
Name
Last commit
Last update
..
api Loading commit data...
asmjs Loading commit data...
assembler Loading commit data...
base Loading commit data...
codegen Loading commit data...
compiler Loading commit data...
compiler-dispatcher Loading commit data...
date Loading commit data...
debug Loading commit data...
diagnostics Loading commit data...
execution Loading commit data...
heap Loading commit data...
interpreter Loading commit data...
libplatform Loading commit data...
logging Loading commit data...
numbers Loading commit data...
objects Loading commit data...
parser Loading commit data...
profiler Loading commit data...
regexp Loading commit data...
regress Loading commit data...
runtime Loading commit data...
security Loading commit data...
strings Loading commit data...
tasks Loading commit data...
torque Loading commit data...
utils Loading commit data...
wasm Loading commit data...
zone Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
avoid-windows-h-includes.cc Loading commit data...
run-all-unittests.cc Loading commit data...
test-helpers.cc Loading commit data...
test-helpers.h Loading commit data...
test-utils.cc Loading commit data...
test-utils.h Loading commit data...
testcfg.py Loading commit data...
unittests.status Loading commit data...