[asm.js] Refactor parser identifier memory management.
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: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#44836}
Showing
Please
register
or
sign in
to comment