• 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
asm-parser.h 11.2 KB