• jochen's avatar
    Fully deserialize the scope chain after parsing, not before · 94492437
    jochen authored
    To avoid a dependency on the heap during parsing, we only create a scope chain
    without linking to the associated ScopeInfo objects before parsing. This is
    enough to avoid special cases during parsing of arrow functions / eval.
    
    Looking at the outer scope's variables during parsing was only needed for hosting
    sloppy block functions inside eval. To be able to do this now, we hoist for the
    outer-most eval scope after parsing, in DeclarationScope::Analyze.
    
    DeclarationScope::Analyze is also where we replace the outer scope chain with the
    fully deserialized version, so variables can be resolved.
    
    Also, this unifies background and foreground thread parsing, as we don't have to
    worry about ScopeInfos getting accessed before we're back on the main thread.
    
    BUG=v8:5215
    R=verwaest@chromium.org,marja@chromium.org,adamk@chromium.org
    
    Review-Url: https://codereview.chromium.org/2306413002
    Cr-Commit-Position: refs/heads/master@{#39452}
    94492437
Name
Last commit
Last update
..
benchmarks Loading commit data...
cctest Loading commit data...
common Loading commit data...
fuzzer Loading commit data...
inspector_protocol_parser_test Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mozilla Loading commit data...
preparser Loading commit data...
promises-aplus Loading commit data...
simdjs Loading commit data...
test262 Loading commit data...
unittests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...
bot_default.gyp Loading commit data...
bot_default.isolate Loading commit data...
default.gyp Loading commit data...
default.isolate Loading commit data...
optimize_for_size.gyp Loading commit data...
optimize_for_size.isolate Loading commit data...
perf.gyp Loading commit data...
perf.isolate Loading commit data...