• 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
..
compiler Loading commit data...
heap Loading commit data...
interpreter Loading commit data...
wasm Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
cctest.cc Loading commit data...
cctest.gyp Loading commit data...
cctest.h Loading commit data...
cctest.isolate Loading commit data...
cctest.status Loading commit data...
cctest_exe.isolate Loading commit data...
expression-type-collector-macros.h Loading commit data...
expression-type-collector.cc Loading commit data...
expression-type-collector.h Loading commit data...
gay-fixed.cc Loading commit data...
gay-fixed.h Loading commit data...
gay-precision.cc Loading commit data...
gay-precision.h Loading commit data...
gay-shortest.cc Loading commit data...
gay-shortest.h Loading commit data...
log-eq-of-logging-and-traversal.js Loading commit data...
print-extension.cc Loading commit data...
print-extension.h Loading commit data...
profiler-extension.cc Loading commit data...
profiler-extension.h Loading commit data...
test-accessors.cc Loading commit data...
test-api-accessors.cc Loading commit data...
test-api-fast-accessor-builder.cc Loading commit data...
test-api-interceptors.cc Loading commit data...
test-api.cc Loading commit data...
test-api.h Loading commit data...
test-array-list.cc Loading commit data...
test-asm-validator.cc Loading commit data...
test-assembler-arm.cc Loading commit data...
test-assembler-arm64.cc Loading commit data...
test-assembler-ia32.cc Loading commit data...
test-assembler-mips.cc Loading commit data...
test-assembler-mips64.cc Loading commit data...
test-assembler-ppc.cc Loading commit data...
test-assembler-x64.cc Loading commit data...
test-assembler-x87.cc Loading commit data...
test-ast-expression-visitor.cc Loading commit data...
test-ast.cc Loading commit data...
test-atomicops.cc Loading commit data...
test-bignum-dtoa.cc Loading commit data...
test-bignum.cc Loading commit data...
test-bit-vector.cc Loading commit data...
test-circular-queue.cc Loading commit data...
test-code-stubs-arm.cc Loading commit data...
test-code-stubs-arm64.cc Loading commit data...
test-code-stubs-ia32.cc Loading commit data...
test-code-stubs-mips.cc Loading commit data...
test-code-stubs-mips64.cc Loading commit data...
test-code-stubs-x64.cc Loading commit data...
test-code-stubs-x87.cc Loading commit data...
test-code-stubs.cc Loading commit data...
test-code-stubs.h Loading commit data...
test-compiler.cc Loading commit data...
test-constantpool.cc Loading commit data...
test-conversions.cc Loading commit data...
test-cpu-profiler.cc Loading commit data...
test-date.cc Loading commit data...
test-debug.cc Loading commit data...
test-decls.cc Loading commit data...
test-deoptimization.cc Loading commit data...
test-dictionary.cc Loading commit data...
test-disasm-arm.cc Loading commit data...
test-disasm-arm64.cc Loading commit data...
test-disasm-ia32.cc Loading commit data...
test-disasm-mips.cc Loading commit data...
test-disasm-mips64.cc Loading commit data...
test-disasm-ppc.cc Loading commit data...
test-disasm-x64.cc Loading commit data...
test-disasm-x87.cc Loading commit data...
test-diy-fp.cc Loading commit data...
test-double.cc Loading commit data...
test-dtoa.cc Loading commit data...
test-elements-kind.cc Loading commit data...
test-experimental-extra.js Loading commit data...
test-extra.js Loading commit data...
test-fast-dtoa.cc Loading commit data...
test-feedback-vector.cc Loading commit data...
test-feedback-vector.h Loading commit data...
test-field-type-tracking.cc Loading commit data...
test-fixed-dtoa.cc Loading commit data...
test-flags.cc Loading commit data...
test-func-name-inference.cc Loading commit data...
test-fuzz-arm64.cc Loading commit data...
test-gc-tracer.cc Loading commit data...
test-global-handles.cc Loading commit data...
test-global-object.cc Loading commit data...
test-hashing.cc Loading commit data...
test-hashmap.cc Loading commit data...
test-heap-profiler.cc Loading commit data...
test-hydrogen-types.cc Loading commit data...
test-identity-map.cc Loading commit data...
test-inobject-slack-tracking.cc Loading commit data...
test-javascript-arm64.cc Loading commit data...
test-js-arm64-variables.cc Loading commit data...
test-list.cc Loading commit data...
test-liveedit.cc Loading commit data...
test-lockers.cc Loading commit data...
test-log-stack-tracer.cc Loading commit data...
test-log.cc Loading commit data...
test-macro-assembler-arm.cc Loading commit data...
test-macro-assembler-ia32.cc Loading commit data...
test-macro-assembler-mips.cc Loading commit data...
test-macro-assembler-mips64.cc Loading commit data...
test-macro-assembler-x64.cc Loading commit data...
test-macro-assembler-x87.cc Loading commit data...
test-mementos.cc Loading commit data...
test-microtask-delivery.cc Loading commit data...
test-object-observe.cc Loading commit data...
test-parsing.cc Loading commit data...
test-platform-linux.cc Loading commit data...
test-platform-win32.cc Loading commit data...
test-platform.cc Loading commit data...
test-profile-generator.cc Loading commit data...
test-random-number-generator.cc Loading commit data...
test-receiver-check-hidden-prototype.cc Loading commit data...
test-regexp.cc Loading commit data...
test-reloc-info.cc Loading commit data...
test-representation.cc Loading commit data...
test-sampler-api.cc Loading commit data...
test-serialize.cc Loading commit data...
test-simd.cc Loading commit data...
test-slots-buffer.cc Loading commit data...
test-strings.cc Loading commit data...
test-strtod.cc Loading commit data...
test-symbols.cc Loading commit data...
test-thread-termination.cc Loading commit data...
test-threads.cc Loading commit data...
test-trace-event.cc Loading commit data...
test-transitions.cc Loading commit data...
test-typedarrays.cc Loading commit data...
test-types.cc Loading commit data...
test-typing-reset.cc Loading commit data...
test-unbound-queue.cc Loading commit data...
test-unboxed-doubles.cc Loading commit data...
test-unique.cc Loading commit data...
test-unscopables-hidden-prototype.cc Loading commit data...
test-utils-arm64.cc Loading commit data...
test-utils-arm64.h Loading commit data...
test-utils.cc Loading commit data...
test-version.cc Loading commit data...
test-weakmaps.cc Loading commit data...
test-weaksets.cc Loading commit data...
testcfg.py Loading commit data...
trace-extension.cc Loading commit data...
trace-extension.h Loading commit data...
types-fuzz.h Loading commit data...