• rossberg's avatar
    [es6] Implement for-of iterator finalization · cb1bf4af
    rossberg authored
    Implements iterator finalisation by desugaring for-of loops with an additional try-finally wrapper. See comment in parser.cc for details.
    
    Also improved some AST printing facilities while there.
    
    @Ross, I had to disable the bytecode generation test for for-of, because it got completely out of hand after this change (the new bytecode has 150+ lines). See the TODO that I assigned to you.
    
    Patch set 1 is WIP patch by Georg (http://crrev.com/1695583003), patch set 2 relative changes.
    
    @Georg, FYI, I changed the following:
    
    - Moved try-finally out of the loop body, for performance, and in order to be able to handle `continue` correctly.
    - Fixed scope management in ParseForStatement, which was the cause for the variable allocation failure.
    - Fixed pre-existing zone initialisation bug in rewriter, which caused the crashes.
    - Enabled all tests, adjusted a few others, added a couple more.
    
    BUG=v8:2214
    LOG=Y
    
    Review URL: https://codereview.chromium.org/1695393003
    
    Cr-Commit-Position: refs/heads/master@{#34111}
    cb1bf4af
Name
Last commit
Last update
..
regress Loading commit data...
array-species.js Loading commit data...
arraybuffer-species.js Loading commit data...
atomics.js Loading commit data...
block-conflicts-sloppy.js Loading commit data...
block-const-assign-sloppy.js Loading commit data...
block-eval-var-over-let.js Loading commit data...
block-for-sloppy.js Loading commit data...
block-lazy-compile.js Loading commit data...
block-leave-sloppy.js Loading commit data...
block-let-crankshaft-sloppy.js Loading commit data...
block-let-declaration-sloppy.js Loading commit data...
block-let-semantics-sloppy.js Loading commit data...
block-scoping-sloppy.js Loading commit data...
block-scoping-top-level-sloppy.js Loading commit data...
block-sloppy-function.js Loading commit data...
dataview-accessors.js Loading commit data...
debug-step-destructuring-assignment.js Loading commit data...
debug-step-destructuring-bind.js Loading commit data...
debug-stepin-default-parameters.js Loading commit data...
debug-stepin-proxies.js Loading commit data...
default-parameters-debug.js Loading commit data...
default-parameters-destructuring.js Loading commit data...
default-parameters.js Loading commit data...
destructuring-assignment-lazy.js Loading commit data...
destructuring-assignment.js Loading commit data...
destructuring-parameters-literalcount-nolazy.js Loading commit data...
destructuring-parameters-literalcount.js Loading commit data...
destructuring.js Loading commit data...
do-expressions.js Loading commit data...
function-name.js Loading commit data...
function-sent.js Loading commit data...
futex.js Loading commit data...
generators.js Loading commit data...
iterator-close.js Loading commit data...
module-linking.js Loading commit data...
module-parsing-eval.js Loading commit data...
module-recompile.js Loading commit data...
module-resolution.js Loading commit data...
modules.js Loading commit data...
object-entries.js Loading commit data...
object-get-own-property-descriptors.js Loading commit data...
object-values.js Loading commit data...
private-symbols.js Loading commit data...
private.js Loading commit data...
promise-species.js Loading commit data...
proxies-accesschecks.js Loading commit data...
proxies-apply.js Loading commit data...
proxies-bind.js Loading commit data...
proxies-construct.js Loading commit data...
proxies-cross-realm-exception.js Loading commit data...
proxies-define-property.js Loading commit data...
proxies-delete-property.js Loading commit data...
proxies-enumerate.js Loading commit data...
proxies-example-membrane.js Loading commit data...
proxies-for.js Loading commit data...
proxies-function.js Loading commit data...
proxies-get-own-property-descriptor.js Loading commit data...
proxies-get-prototype-of.js Loading commit data...
proxies-get.js Loading commit data...
proxies-global-reference.js Loading commit data...
proxies-has-own-property.js Loading commit data...
proxies-has.js Loading commit data...
proxies-hash.js Loading commit data...
proxies-integrity.js Loading commit data...
proxies-is-extensible.js Loading commit data...
proxies-json.js Loading commit data...
proxies-keys.js Loading commit data...
proxies-object-assign.js Loading commit data...
proxies-ownkeys.js Loading commit data...
proxies-prevent-extensions.js Loading commit data...
proxies-property-is-enumerable.js Loading commit data...
proxies-prototype-handler-stackoverflow.js Loading commit data...
proxies-prototype-target-stackoverflow.js Loading commit data...
proxies-revocable.js Loading commit data...
proxies-set-prototype-of.js Loading commit data...
proxies-set.js Loading commit data...
proxies-with-unscopables.js Loading commit data...
proxies-with.js Loading commit data...
proxies.js Loading commit data...
reflect-apply.js Loading commit data...
reflect-construct.js Loading commit data...
reflect-define-property.js Loading commit data...
reflect-enumerate-delete.js Loading commit data...
reflect-enumerate-opt.js Loading commit data...
reflect-enumerate-special-cases.js Loading commit data...
reflect-enumerate.js Loading commit data...
reflect-get-own-property-descriptor.js Loading commit data...
reflect-get-prototype-of.js Loading commit data...
reflect-own-keys.js Loading commit data...
reflect-prevent-extensions.js Loading commit data...
reflect-set-prototype-of.js Loading commit data...
reflect.js Loading commit data...
regexp-flags.js Loading commit data...
regexp-lookbehind.js Loading commit data...
regexp-sticky.js Loading commit data...
set-prototype-of.js Loading commit data...
sharedarraybuffer.js Loading commit data...
simd.js Loading commit data...
species.js Loading commit data...
string-match.js Loading commit data...
string-replace.js Loading commit data...
string-split.js Loading commit data...
to-length.js Loading commit data...
to-name.js Loading commit data...
to-number.js Loading commit data...
to-primitive.js Loading commit data...
to-string.js Loading commit data...
typedarray-species.js Loading commit data...
unicode-character-ranges.js Loading commit data...
unicode-escapes-in-regexps.js Loading commit data...
unicode-regexp-backrefs.js Loading commit data...
unicode-regexp-ignore-case-noi18n.js Loading commit data...
unicode-regexp-ignore-case.js Loading commit data...
unicode-regexp-last-index.js Loading commit data...
unicode-regexp-property-class.js Loading commit data...
unicode-regexp-restricted-syntax.js Loading commit data...
unicode-regexp-unanchored-advance.js Loading commit data...
unicode-regexp-zero-length.js Loading commit data...