• Michael Starzinger's avatar
    [asm.js] Refactor parser identifier memory management. · c2abd807
    Michael Starzinger authored
    This unifies the memory management of identifier strings passed between
    the scanner, parser and module builder. The following scheme is used:
     - The scanner does not create copies of identifier strings itself, it
       exposes a reference to the current identifier. This reference becomes
       invalid as soon as the scanner advanced.
     - The parser preserves a single copy of each identifier that is stored
       in any data structure. That copy is allocated in the zone, lifetime
       is coupled to that of the zone.
     - The module builder can use all such identifiers by reference, as long
       as its lifetime is also coupled to the same zone.
    
    Note that the module builder still creates redundant copies for some
    identifiers (in order to maintain backwards compatibility with the old
    AST-based parser). This can be fixed once the "old validator" has been
    removed.
    
    R=clemensh@chromium.org
    BUG=v8:6127
    
    Change-Id: I8611d162e87730045a6061d08c3fe841daae8a7d
    Reviewed-on: https://chromium-review.googlesource.com/484439
    Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
    Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#44836}
    c2abd807
Name
Last commit
Last update
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles 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...
.gitignore Loading commit data...
.gn 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...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
Makefile.android 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...