New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 16 users

Issue metadata

Status: Fixed
Owner:
Closed: Mar 9
Cc:
Components:
HW: All
NextAction: ----
OS: All
Priority: 2
Type: FeatureRequest

Blocked on:
issue 6242

Blocking:
issue 6226



Sign in to add a comment

Implement async iteration proposal (tracking bug)

Project Member Reported by ca...@igalia.com, Jan 17 2017

Issue description

Proposal for "async iteration" is (at the time of this writing) at stage 3 in the TC39 process, and is beginning to be implemented by browsers. WebKit has a contributor working on this, and I've begun work on the feature in v8.

The feature has a fairly wide surface area, with several new additions to the runtime:

- Async generators: like generators, but implementing the AsyncIterator protocol
- Symbol.asyncIterator
- for-await-of loops in async functions / async generators
- Async-from-Sync iterators (a builtin which Promise-casts iterated values from an ordinary iterator, and implements the AsyncIterator protocol).
 

Comment 1 by ca...@igalia.com, Jan 17 2017

Labels: -Type-Bug Type-FeatureRequest
Project Member

Comment 2 by bugdroid1@chromium.org, Jan 18 2017

Project Member

Comment 3 by bugdroid1@chromium.org, Jan 20 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/498084222a9ead2af42e95bb463614f0b8e6b1d7

commit 498084222a9ead2af42e95bb463614f0b8e6b1d7
Author: caitp <caitp@igalia.com>
Date: Fri Jan 20 00:42:09 2017

[async-iteration] expose Symbol.asyncIterator behind flag --harmony-async-iteration

Flag is used by followup patches split apart from
https://codereview.chromium.org/2622833002/, and tests for each split
out CL ends up using Symbol.asyncIterator, so it makes sense to land it
first (behind a flag).

BUG= v8:5855 
R=littledan@chromium.org, adamk@chromium.org

Review-Url: https://codereview.chromium.org/2645923003
Cr-Commit-Position: refs/heads/master@{#42527}

[modify] https://crrev.com/498084222a9ead2af42e95bb463614f0b8e6b1d7/src/bootstrapper.cc
[modify] https://crrev.com/498084222a9ead2af42e95bb463614f0b8e6b1d7/src/flag-definitions.h
[modify] https://crrev.com/498084222a9ead2af42e95bb463614f0b8e6b1d7/src/heap-symbols.h
[add] https://crrev.com/498084222a9ead2af42e95bb463614f0b8e6b1d7/test/mjsunit/harmony/symbol-async-iterator.js

Components: Language
Labels: Hotlist-test262 SpecViolation-MissingFeature

Comment 5 by surma@chromium.org, Feb 14 2017

Cc: surma@chromium.org
Project Member

Comment 6 by bugdroid1@chromium.org, Feb 15 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/76ab55e3d37f31e1f343ad35c293404bfd259457

commit 76ab55e3d37f31e1f343ad35c293404bfd259457
Author: caitp <caitp@igalia.com>
Date: Wed Feb 15 19:39:06 2017

[async-iteration] add support for for-await-of loops in Async Functions

When --harmony-async-iteration is enabled, it is now possible to
use the for-await-of loop, which uses the Async Iteration protocol
rather than the ordinary ES6 Iteration protocol.

the Async-from-Sync Iterator object is not implemented in this CL,
and so for-await-of loops will abort execution if the iterated object
does not have a Symbol.asyncIterator() method. Async-from-Sync
Iterators are implemented seperately in https://codereview.chromium.org/2645313003/

BUG= v8:5855 ,  v8:4483 
R=neis@chromium.org, littledan@chromium.org, adamk@chromium.org

Review-Url: https://codereview.chromium.org/2637403008
Cr-Commit-Position: refs/heads/master@{#43224}

[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/ast/ast.h
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/interpreter/bytecode-array-builder.cc
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/interpreter/bytecode-array-builder.h
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/interpreter/constant-array-builder.cc
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/interpreter/constant-array-builder.h
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/messages.h
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/parsing/parser-base.h
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/parsing/parser.cc
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/parsing/parser.h
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/parsing/pattern-rewriter.cc
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/parsing/preparser.h
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/runtime/runtime-internal.cc
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/src/runtime/runtime.h
[modify] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/test/cctest/test-parsing.cc
[add] https://crrev.com/76ab55e3d37f31e1f343ad35c293404bfd259457/test/mjsunit/harmony/for-await-of.js

Project Member

Comment 7 by bugdroid1@chromium.org, Feb 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/0423341034c767d91128c9fd68e3f51e60359c1c

commit 0423341034c767d91128c9fd68e3f51e60359c1c
Author: caitp <caitp@igalia.com>
Date: Fri Feb 24 17:48:49 2017

[async-iteration] implement Async-from-Sync Iterator

Introduce a new Object to allow GetIterator("async") to function when the
iterable does not have a Symbol.asyncIterator method.

This patch has been split out from https://codereview.chromium.org/2622833002/
and incorporates test cases.

BUG= v8:5855 ,  v8:4483 
R=jgruber@chromium.org, rmcilroy@chromium.org, neis@chromium.org
TBR=hpayer@chromium.org, bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/2645313003
Cr-Commit-Position: refs/heads/master@{#43419}

[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/BUILD.gn
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/ast/ast-types.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/bootstrapper.cc
[add] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/builtins/builtins-async-iterator.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/builtins/builtins.h
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/code-stub-assembler.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/code-stub-assembler.h
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/compiler/code-assembler.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/compiler/code-assembler.h
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/compiler/types.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/contexts.h
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/deoptimizer.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/factory.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/factory.h
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/heap/objects-visiting.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/interpreter/interpreter-intrinsics.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/interpreter/interpreter-intrinsics.h
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/objects-body-descriptors-inl.h
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/objects-debug.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/objects-inl.h
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/objects.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/objects.h
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/runtime/runtime-internal.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/src/v8.gyp
[add] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/test/cctest/interpreter/generate-bytecode-expectations.cc
[modify] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/test/cctest/interpreter/test-bytecode-generator.cc
[add] https://crrev.com/0423341034c767d91128c9fd68e3f51e60359c1c/test/mjsunit/harmony/async-from-sync-iterator.js

Project Member

Comment 8 by bugdroid1@chromium.org, Mar 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/9377fd1a462a16aa9220df81e5d6c8de988d4a47

commit 9377fd1a462a16aa9220df81e5d6c8de988d4a47
Author: Caitlin Potter <caitp@igalia.com>
Date: Wed Mar 22 17:38:27 2017

[async-iteration] implement parsing for AsyncGenerators

Just the front-end side of
https://chromium-review.googlesource.com/c/446961/. Adds support for
parsing AsyncGeneratorExpression, AsyncGeneratorDeclaration, and
AsyncGeneratorMethod, as well as parser tests.

BUG= v8:5855 
R=neis@chromium.org, marja@chromium.org, littledan@chromium.org

Change-Id: I70e1a9681f22573f29292eacb4b9f57f9a38e2b2
Reviewed-on: https://chromium-review.googlesource.com/447117
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Cr-Commit-Position: refs/heads/master@{#44040}
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/src/ast/ast-numbering.cc
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/src/ast/ast.h
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/src/ast/scopes.cc
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/src/ast/scopes.h
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/src/contexts.h
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/src/globals.h
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/src/parsing/parser-base.h
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/src/parsing/parser.cc
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/src/parsing/parser.h
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/src/parsing/preparser.h
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/src/runtime/runtime-generator.cc
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/src/runtime/runtime.h
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden
[modify] https://crrev.com/9377fd1a462a16aa9220df81e5d6c8de988d4a47/test/cctest/test-parsing.cc

Labels: Priority-2
Project Member

Comment 10 by bugdroid1@chromium.org, Mar 29 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3

commit bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3
Author: Caitlin Potter <caitp@igalia.com>
Date: Wed Mar 29 17:33:12 2017

[async-iteration] implement AsyncGenerator

- Introduce new struct AsyncGeneratorRequest, which holds
  information pertinent to resuming execution of an
  AsyncGenerator, such as the Promise associated with the async
  generator request. It is intended to be used as a singly
  linked list, and holds a pointer to the next item in te queue.

- Introduce JSAsyncGeneratorObject (subclass of
  JSGeneratorObject), which includes several new internal fields
  (`queue` which contains a singly linked list of
  AsyncGeneratorRequest objects, and `await_input` which
  contains the sent value from an Await expression (This is
  necessary to prevent function.sent (used by yield*) from
  having the sent value observably overwritten during
  execution).

- Modify SuspendGenerator to accept a set of Flags, which
  indicate whether the suspend is for a Yield or Await, and
  whether it takes place on an async generator or ES6
  generator.

- Introduce interpreter intrinsics and TF intrinsic lowering for
  accessing the await input of an async generator

- Modify the JSGeneratorStore operator to understand whether or
  not it's suspending for a normal yield, or an AsyncGenerator
  Await. This ensures appropriate registers are stored.

- Add versions of ResumeGeneratorTrampoline which store the
  input value in a different field depending on wether it's an
  AsyncGenerator Await resume, or an ordinary resume. Also modifies
  whether debug code will assert that the generator object is a
  JSGeneratorObject or a JSAsyncGeneratorObject depending on the
  resume type.

BUG= v8:5855 
R=bmeurer@chromium.org, rmcilroy@chromium.org, jgruber@chromium.org,
littledan@chromium.org, neis@chromium.org
TBR=marja@chromium.org

Change-Id: I9d58df1d344465fc937fe7eed322424204497187
Reviewed-on: https://chromium-review.googlesource.com/446961
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#44240}
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/BUILD.gn
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/include/v8.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/arm/macro-assembler-arm.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/arm/macro-assembler-arm.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/arm64/macro-assembler-arm64.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/arm64/macro-assembler-arm64.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/ast/ast-types.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/ast/ast.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/bootstrapper.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/builtins-async-gen.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/builtins-async-gen.h
[add] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/builtins-async-iterator-gen.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/builtins-constructor-gen.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/builtins-definitions.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/builtins-function.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/builtins.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/code-factory.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/code-factory.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/compiler/access-builder.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/compiler/access-builder.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/compiler/bytecode-graph-builder.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/compiler/code-assembler.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/compiler/code-assembler.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/compiler/js-intrinsic-lowering.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/compiler/js-intrinsic-lowering.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/compiler/js-operator.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/compiler/js-operator.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/compiler/js-typed-lowering.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/compiler/types.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/contexts.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/deoptimizer.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/factory.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/globals.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/heap/objects-visiting.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/ia32/macro-assembler-ia32.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/ia32/macro-assembler-ia32.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/interface-descriptors.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/interpreter/bytecode-array-builder.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/interpreter/bytecode-array-builder.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/interpreter/bytecode-flags.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/interpreter/bytecode-flags.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/interpreter/bytecode-generator.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/interpreter/bytecodes.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/interpreter/interpreter-generator.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/interpreter/interpreter-intrinsics-generator.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/interpreter/interpreter-intrinsics.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/mips/macro-assembler-mips.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/mips/macro-assembler-mips.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/mips64/macro-assembler-mips64.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/mips64/macro-assembler-mips64.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/objects-body-descriptors-inl.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/objects-debug.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/objects-inl.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/objects-printer.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/objects.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/objects.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/parsing/parser-base.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/parsing/parser.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/parsing/preparser.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/runtime/runtime-generator.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/runtime/runtime.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/v8.gyp
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/x64/macro-assembler-x64.cc
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/src/x64/macro-assembler-x64.h
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/test/cctest/interpreter/bytecode_expectations/Generators.golden
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/test/cctest/interpreter/bytecode_expectations/Modules.golden
[add] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/test/mjsunit/harmony/async-generators-basic.js
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/test/test262/test262.status
[modify] https://crrev.com/bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3/test/unittests/interpreter/bytecode-array-builder-unittest.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Mar 29 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/5615e5b86609362a84ef3c213e6e901a6f8c6637

commit 5615e5b86609362a84ef3c213e6e901a6f8c6637
Author: Caitlin Potter <caitp@igalia.com>
Date: Wed Mar 29 19:33:33 2017

[cleanup] combine 3 ResumeGenerator stubs into one

This hopefully shrinks binary size a bit, at the cost of (slightly)
increasing the complexity of the ResumeGenerator stub. Includes ia32,
x64, mips, mips64, arm and arm64 ports.

BUG= v8:5855 
R=rmcilroy@chromium.org, paul.lind@imgtec.com, bmeurer@chromium.org, neis@chromium.org

Change-Id: I848ce08afd828091a11e03c89d5be065ff557ef3
Reviewed-on: https://chromium-review.googlesource.com/461303
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#44244}
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/arm/interface-descriptors-arm.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/arm/macro-assembler-arm.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/arm/macro-assembler-arm.h
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/arm64/interface-descriptors-arm64.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/arm64/macro-assembler-arm64.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/arm64/macro-assembler-arm64.h
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/builtins/builtins-async-function-gen.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/builtins/builtins-definitions.h
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/builtins/builtins-generator-gen.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/builtins/builtins.h
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/code-factory.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/code-factory.h
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/ia32/interface-descriptors-ia32.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/ia32/macro-assembler-ia32.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/ia32/macro-assembler-ia32.h
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/mips/interface-descriptors-mips.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/mips/macro-assembler-mips.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/mips/macro-assembler-mips.h
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/mips64/interface-descriptors-mips64.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/mips64/macro-assembler-mips64.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/mips64/macro-assembler-mips64.h
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/x64/interface-descriptors-x64.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/x64/macro-assembler-x64.cc
[modify] https://crrev.com/5615e5b86609362a84ef3c213e6e901a6f8c6637/src/x64/macro-assembler-x64.h

Project Member

Comment 12 by bugdroid1@chromium.org, Mar 29 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a857e3d0f37ae39a170e95138f9f16f90f1947e7

commit a857e3d0f37ae39a170e95138f9f16f90f1947e7
Author: bjaideep <bjaideep@ca.ibm.com>
Date: Wed Mar 29 20:31:07 2017

PPC/s390: [async-iteration] implement AsyncGenerator

Port bf463c4dc080abb1ae39c6f0a93e6a95867b0ca3

Original Commit Message:

    - Introduce new struct AsyncGeneratorRequest, which holds
      information pertinent to resuming execution of an
      AsyncGenerator, such as the Promise associated with the async
      generator request. It is intended to be used as a singly
      linked list, and holds a pointer to the next item in te queue.

    - Introduce JSAsyncGeneratorObject (subclass of
      JSGeneratorObject), which includes several new internal fields
      (`queue` which contains a singly linked list of
      AsyncGeneratorRequest objects, and `await_input` which
      contains the sent value from an Await expression (This is
      necessary to prevent function.sent (used by yield*) from
      having the sent value observably overwritten during
      execution).

    - Modify SuspendGenerator to accept a set of Flags, which
      indicate whether the suspend is for a Yield or Await, and
      whether it takes place on an async generator or ES6
      generator.

    - Introduce interpreter intrinsics and TF intrinsic lowering for
      accessing the await input of an async generator

    - Modify the JSGeneratorStore operator to understand whether or
      not it's suspending for a normal yield, or an AsyncGenerator
      Await. This ensures appropriate registers are stored.

    - Add versions of ResumeGeneratorTrampoline which store the
      input value in a different field depending on wether it's an
      AsyncGenerator Await resume, or an ordinary resume. Also modifies
      whether debug code will assert that the generator object is a
      JSGeneratorObject or a JSAsyncGeneratorObject depending on the
      resume type.

R=caitp@igalia.com, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG= v8:5855 
LOG=N

Review-Url: https://codereview.chromium.org/2780283002
Cr-Commit-Position: refs/heads/master@{#44247}

[modify] https://crrev.com/a857e3d0f37ae39a170e95138f9f16f90f1947e7/src/builtins/ppc/builtins-ppc.cc
[modify] https://crrev.com/a857e3d0f37ae39a170e95138f9f16f90f1947e7/src/builtins/s390/builtins-s390.cc
[modify] https://crrev.com/a857e3d0f37ae39a170e95138f9f16f90f1947e7/src/ppc/macro-assembler-ppc.cc
[modify] https://crrev.com/a857e3d0f37ae39a170e95138f9f16f90f1947e7/src/ppc/macro-assembler-ppc.h
[modify] https://crrev.com/a857e3d0f37ae39a170e95138f9f16f90f1947e7/src/s390/macro-assembler-s390.cc
[modify] https://crrev.com/a857e3d0f37ae39a170e95138f9f16f90f1947e7/src/s390/macro-assembler-s390.h

Project Member

Comment 13 by bugdroid1@chromium.org, Mar 29 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/411efc16a7a0fc8c01294c64587625fd8dad9a67

commit 411efc16a7a0fc8c01294c64587625fd8dad9a67
Author: bjaideep <bjaideep@ca.ibm.com>
Date: Wed Mar 29 22:18:06 2017

PPC/s390: [cleanup] combine 3 ResumeGenerator stubs into one

Port 5615e5b86609362a84ef3c213e6e901a6f8c6637

Original Commit Message:

    This hopefully shrinks binary size a bit, at the cost of (slightly)
    increasing the complexity of the ResumeGenerator stub. Includes ia32,
    x64, mips, mips64, arm and arm64 ports.

R=caitp@igalia.com, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG= v8:5855 
LOG=N

Review-Url: https://codereview.chromium.org/2783043002
Cr-Commit-Position: refs/heads/master@{#44253}

[modify] https://crrev.com/411efc16a7a0fc8c01294c64587625fd8dad9a67/src/builtins/ppc/builtins-ppc.cc
[modify] https://crrev.com/411efc16a7a0fc8c01294c64587625fd8dad9a67/src/builtins/s390/builtins-s390.cc
[modify] https://crrev.com/411efc16a7a0fc8c01294c64587625fd8dad9a67/src/ppc/interface-descriptors-ppc.cc
[modify] https://crrev.com/411efc16a7a0fc8c01294c64587625fd8dad9a67/src/ppc/macro-assembler-ppc.cc
[modify] https://crrev.com/411efc16a7a0fc8c01294c64587625fd8dad9a67/src/ppc/macro-assembler-ppc.h
[modify] https://crrev.com/411efc16a7a0fc8c01294c64587625fd8dad9a67/src/s390/interface-descriptors-s390.cc
[modify] https://crrev.com/411efc16a7a0fc8c01294c64587625fd8dad9a67/src/s390/macro-assembler-s390.cc
[modify] https://crrev.com/411efc16a7a0fc8c01294c64587625fd8dad9a67/src/s390/macro-assembler-s390.h

Comment 14 by ca...@igalia.com, Mar 30 2017

Blockedon: 6177

Comment 15 by ca...@igalia.com, Mar 30 2017

Blockedon: -6177
Project Member

Comment 16 by bugdroid1@chromium.org, Mar 30 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e89452dd258ec310661a44280e77b25e7c290597

commit e89452dd258ec310661a44280e77b25e7c290597
Author: Caitlin Potter <caitp@igalia.com>
Date: Thu Mar 30 17:40:58 2017

[async-iteration] improve Function.prototype.toString() output

Currently, async generators are stringified the same way normal
Generators are. This change prefixes async generator methods with
"async *", and other async generator functions with
"async function* ".

BUG= v8:5855 
R=adamk@chromium.org, littledan@chromium.org, jwolfe@igalia.com

Change-Id: Ia809fad64caac4464dbc9f7fa7728584d0f67832
Reviewed-on: https://chromium-review.googlesource.com/463526
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#44278}
[modify] https://crrev.com/e89452dd258ec310661a44280e77b25e7c290597/src/objects.cc
[modify] https://crrev.com/e89452dd258ec310661a44280e77b25e7c290597/test/mjsunit/harmony/async-generators-basic.js

Project Member

Comment 17 by bugdroid1@chromium.org, Apr 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/9461fe249e85ca41e1aad9124cb1223c766dd554

commit 9461fe249e85ca41e1aad9124cb1223c766dd554
Author: Caitlin Potter <caitp@igalia.com>
Date: Thu Apr 06 14:14:58 2017

[builtins] don't inline calls for common Promise ops in async builtins

InternalResolvePromise, InternalPromiseReject and
InternalPerformPromiseThen generate quite a lot of code.

This change adds 3 new TF stubs which inline calls to these builtins.
These stubs are invoked rather than inlining those operations listed
above directly. This is done for Async Iteration builtins, as well as
Async Function builtins. Promise builtins are left as they were, and
continue to inline these calls.

This results in a roughly 99kb reduction in snapshot_blob.bin on an x64
release build.

BUG= v8:5855 
R=gsathya@chromium.org, jgruber@chromium.org

Change-Id: I3349d0f0353a72270ae40b974312d64d1c8a9e46
Reviewed-on: https://chromium-review.googlesource.com/461269
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Sathya Gunasekaran (ooo until April 10) <gsathya@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#44445}
[modify] https://crrev.com/9461fe249e85ca41e1aad9124cb1223c766dd554/src/builtins/builtins-async-gen.cc
[modify] https://crrev.com/9461fe249e85ca41e1aad9124cb1223c766dd554/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/9461fe249e85ca41e1aad9124cb1223c766dd554/src/builtins/builtins-async-iterator-gen.cc
[modify] https://crrev.com/9461fe249e85ca41e1aad9124cb1223c766dd554/src/builtins/builtins-definitions.h
[modify] https://crrev.com/9461fe249e85ca41e1aad9124cb1223c766dd554/src/builtins/builtins-promise-gen.cc
[modify] https://crrev.com/9461fe249e85ca41e1aad9124cb1223c766dd554/src/frames.cc
[modify] https://crrev.com/9461fe249e85ca41e1aad9124cb1223c766dd554/src/frames.h
[modify] https://crrev.com/9461fe249e85ca41e1aad9124cb1223c766dd554/src/interface-descriptors.h
[modify] https://crrev.com/9461fe249e85ca41e1aad9124cb1223c766dd554/src/isolate.cc

Project Member

Comment 18 by bugdroid1@chromium.org, Apr 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/c931820df4368f30116c67f3bcf164faaebe5d57

commit c931820df4368f30116c67f3bcf164faaebe5d57
Author: Franziska Hinkelmann <franzih@chromium.org>
Date: Thu Apr 06 15:13:44 2017

Revert "[builtins] don't inline calls for common Promise ops in async builtins"

This reverts commit 9461fe249e85ca41e1aad9124cb1223c766dd554.

Reason for revert: Breaks a test in Node.js: 
 parallel/test-util-inspect

=== release test-util-inspect ===                                              
Path: parallel/test-util-inspect
#
# Fatal error in , line 0
# unreachable code
#

==== C stack trace ===============================


Original change's description:
> [builtins] don't inline calls for common Promise ops in async builtins
> 
> InternalResolvePromise, InternalPromiseReject and
> InternalPerformPromiseThen generate quite a lot of code.
> 
> This change adds 3 new TF stubs which inline calls to these builtins.
> These stubs are invoked rather than inlining those operations listed
> above directly. This is done for Async Iteration builtins, as well as
> Async Function builtins. Promise builtins are left as they were, and
> continue to inline these calls.
> 
> This results in a roughly 99kb reduction in snapshot_blob.bin on an x64
> release build.
> 
> BUG= v8:5855 
> R=​gsathya@chromium.org, jgruber@chromium.org
> 
> Change-Id: I3349d0f0353a72270ae40b974312d64d1c8a9e46
> Reviewed-on: https://chromium-review.googlesource.com/461269
> Commit-Queue: Caitlin Potter <caitp@igalia.com>
> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
> Reviewed-by: Sathya Gunasekaran (ooo until April 10) <gsathya@chromium.org>
> Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#44445}

TBR=mstarzinger@chromium.org,gsathya@chromium.org,caitp@igalia.com,jgruber@chromium.org,v8-reviews@googlegroups.com,bmeurer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= v8:5855 

Change-Id: Iabcdf8b025cc9b053a858f8e74389638ac000ba0
Reviewed-on: https://chromium-review.googlesource.com/469946
Reviewed-by: Franziska Hinkelmann <franzih@chromium.org>
Commit-Queue: Franziska Hinkelmann <franzih@chromium.org>
Cr-Commit-Position: refs/heads/master@{#44448}
[modify] https://crrev.com/c931820df4368f30116c67f3bcf164faaebe5d57/src/builtins/builtins-async-gen.cc
[modify] https://crrev.com/c931820df4368f30116c67f3bcf164faaebe5d57/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/c931820df4368f30116c67f3bcf164faaebe5d57/src/builtins/builtins-async-iterator-gen.cc
[modify] https://crrev.com/c931820df4368f30116c67f3bcf164faaebe5d57/src/builtins/builtins-definitions.h
[modify] https://crrev.com/c931820df4368f30116c67f3bcf164faaebe5d57/src/builtins/builtins-promise-gen.cc
[modify] https://crrev.com/c931820df4368f30116c67f3bcf164faaebe5d57/src/frames.cc
[modify] https://crrev.com/c931820df4368f30116c67f3bcf164faaebe5d57/src/frames.h
[modify] https://crrev.com/c931820df4368f30116c67f3bcf164faaebe5d57/src/interface-descriptors.h
[modify] https://crrev.com/c931820df4368f30116c67f3bcf164faaebe5d57/src/isolate.cc

Project Member

Comment 19 by bugdroid1@chromium.org, Apr 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e434d11ffe461dc39810db362441cd44943732f5

commit e434d11ffe461dc39810db362441cd44943732f5
Author: Caitlin Potter <caitp@igalia.com>
Date: Fri Apr 07 12:10:57 2017

Reland "[builtins] don't inline calls for common Promise ops in async builtins"

InternalResolvePromise, InternalPromiseReject and
InternalPerformPromiseThen generate quite a lot of code.

This change adds 3 new TF stubs which inline calls to these builtins.
These stubs are invoked rather than inlining those operations listed
above directly. This is done for Async Iteration builtins, as well as
Async Function builtins. Promise builtins are left as they were, and
continue to inline these calls.

This results in a roughly 99kb reduction in snapshot_blob.bin on an x64
release build.

BUG= v8:5855 
R=gsathya@chromium.org, jgruber@chromium.org

Change-Id: I83e2f096782db685fe316dd071980cd8d696fe53
Reviewed-on: https://chromium-review.googlesource.com/469927
Reviewed-by: Franziska Hinkelmann <franzih@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#44483}
[modify] https://crrev.com/e434d11ffe461dc39810db362441cd44943732f5/src/builtins/builtins-async-gen.cc
[modify] https://crrev.com/e434d11ffe461dc39810db362441cd44943732f5/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/e434d11ffe461dc39810db362441cd44943732f5/src/builtins/builtins-async-iterator-gen.cc
[modify] https://crrev.com/e434d11ffe461dc39810db362441cd44943732f5/src/builtins/builtins-definitions.h
[modify] https://crrev.com/e434d11ffe461dc39810db362441cd44943732f5/src/builtins/builtins-promise-gen.cc
[modify] https://crrev.com/e434d11ffe461dc39810db362441cd44943732f5/src/frames.cc
[modify] https://crrev.com/e434d11ffe461dc39810db362441cd44943732f5/src/frames.h
[modify] https://crrev.com/e434d11ffe461dc39810db362441cd44943732f5/src/interface-descriptors.h
[modify] https://crrev.com/e434d11ffe461dc39810db362441cd44943732f5/src/isolate.cc

Comment 20 by ca...@igalia.com, Apr 7 2017

Blocking: 6226

Comment 21 by ca...@igalia.com, Apr 10 2017

Blockedon: 6242
Project Member

Comment 22 by bugdroid1@chromium.org, Apr 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/30439676db6d7e2809f248fb4998607d6721f068

commit 30439676db6d7e2809f248fb4998607d6721f068
Author: Caitlin Potter <caitp@igalia.com>
Date: Tue Apr 11 12:55:03 2017

[async-iteration] implement spec change to [Async-from-Sync Iterator]

A really slight change in behaviour introduced by
https://github.com/tc39/proposal-async-iteration/commit/395b2e3b2f5acb62f9fae11c5e189423d4af50e6

Just swaps the order that properties are loaded from an iterator result
object in the various Async-from-Sync Iterator methods.

Fixes for the test262 tests have been submitted already (https://github.com/tc39/test262/pull/961).

BUG= v8:5855 ,  v8:6242 
R=littledan@chromium.org, jwolfe@igalia.com,

Change-Id: I1ff0e1b7758c126d02aec27d67ceeb15b91c06cf
Reviewed-on: https://chromium-review.googlesource.com/474087
Reviewed-by: Daniel Ehrenberg <littledan@chromium.org>
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Cr-Commit-Position: refs/heads/master@{#44572}
[modify] https://crrev.com/30439676db6d7e2809f248fb4998607d6721f068/src/builtins/builtins-async-iterator-gen.cc
[modify] https://crrev.com/30439676db6d7e2809f248fb4998607d6721f068/test/mjsunit/harmony/async-from-sync-iterator.js
[modify] https://crrev.com/30439676db6d7e2809f248fb4998607d6721f068/test/test262/test262.status

Project Member

Comment 23 by bugdroid1@chromium.org, Apr 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/fa0066d170f72a7cf5669213e6af5f6398e52bfb

commit fa0066d170f72a7cf5669213e6af5f6398e52bfb
Author: Caitlin Potter <caitp@igalia.com>
Date: Thu Apr 13 14:32:30 2017

[async-iteration] implement spec update for yield* in async generators

https://github.com/tc39/proposal-async-iteration/commit/e3246ad69cc6f83b34bdd3451c3c6abce37fd1f3
removed some redundancies in yield and yield*.

In particular:
- AsyncGeneratorRawYield becomes unnecessary, and is deleted in this CL
- Parser::RewriteYieldStar() is updated to perform the IteratorValue() algorithm as appropriate

BUG= v8:6187 ,  v8:5855 
R=rmcilroy@chromium.org, adamk@chromium.org, littledan@chromium.org, vogelheim@chromium.org

Change-Id: I05e8429b9cbd4531c330ee53a05656b90162064c
Reviewed-on: https://chromium-review.googlesource.com/471806
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Daniel Vogelheim <vogelheim@chromium.org>
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Cr-Commit-Position: refs/heads/master@{#44649}
[modify] https://crrev.com/fa0066d170f72a7cf5669213e6af5f6398e52bfb/src/bootstrapper.cc
[modify] https://crrev.com/fa0066d170f72a7cf5669213e6af5f6398e52bfb/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/fa0066d170f72a7cf5669213e6af5f6398e52bfb/src/builtins/builtins-definitions.h
[modify] https://crrev.com/fa0066d170f72a7cf5669213e6af5f6398e52bfb/src/contexts.h
[modify] https://crrev.com/fa0066d170f72a7cf5669213e6af5f6398e52bfb/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/fa0066d170f72a7cf5669213e6af5f6398e52bfb/src/parsing/parser.cc
[modify] https://crrev.com/fa0066d170f72a7cf5669213e6af5f6398e52bfb/test/mjsunit/harmony/async-generators-basic.js
[modify] https://crrev.com/fa0066d170f72a7cf5669213e6af5f6398e52bfb/test/test262/test262.status

Project Member

Comment 24 by bugdroid1@chromium.org, Apr 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/56b337f7e63bf033818413909c7abb655f0bc3f9

commit 56b337f7e63bf033818413909c7abb655f0bc3f9
Author: Caitlin Potter <caitp@igalia.com>
Date: Mon Apr 24 21:22:11 2017

[async-iteration] delete AsyncGeneratorYield builtin

The AsyncGeneratorYield builtin just invoked the
AsyncGeneratorResolve() stub anyways, so this removes the middle-man.

Really minor refactoring, but clears out a bit of snapshot size and
another context index.

BUG= v8:5855 
R=rmcilroy@chromium.org, bmeurer@chromium.org

Change-Id: I3385a5c5412e8d58493601874c2ad6b60e613012
Reviewed-on: https://chromium-review.googlesource.com/471913
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#44820}
[modify] https://crrev.com/56b337f7e63bf033818413909c7abb655f0bc3f9/src/bootstrapper.cc
[modify] https://crrev.com/56b337f7e63bf033818413909c7abb655f0bc3f9/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/56b337f7e63bf033818413909c7abb655f0bc3f9/src/builtins/builtins-definitions.h
[modify] https://crrev.com/56b337f7e63bf033818413909c7abb655f0bc3f9/src/contexts.h
[modify] https://crrev.com/56b337f7e63bf033818413909c7abb655f0bc3f9/src/interpreter/bytecode-generator.cc

Project Member

Comment 25 by bugdroid1@chromium.org, Jul 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7cf7a4307b304bea3bf2bc3d42dcf1f8ec2fe866

commit 7cf7a4307b304bea3bf2bc3d42dcf1f8ec2fe866
Author: Caitlin Potter <caitp@igalia.com>
Date: Sun Jul 02 21:34:50 2017

[cctest] add Async Generator bytecode tests

These were originally written as part of
https://chromium-review.googlesource.com/c/550396/. I've separated them
out into a separate CL with the intent of landing it first, so that it's
easier to see the difference these CLs will have on generated bytecode.

BUG= v8:5855 
TBR=tebbi@chromium.org, rmcilroy@chromium.org

Change-Id: Ib84e65847d7396e31b0e38d28f59454cf7c58fc1
Reviewed-on: https://chromium-review.googlesource.com/558221
Reviewed-by: Caitlin Potter <caitp@igalia.com>
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Cr-Commit-Position: refs/heads/master@{#46370}
[add] https://crrev.com/7cf7a4307b304bea3bf2bc3d42dcf1f8ec2fe866/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden
[modify] https://crrev.com/7cf7a4307b304bea3bf2bc3d42dcf1f8ec2fe866/test/cctest/interpreter/test-bytecode-generator.cc

Project Member

Comment 26 by bugdroid1@chromium.org, Jul 5 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a7e5abff3424024f8938ec5c23467f481ec34bd3

commit a7e5abff3424024f8938ec5c23467f481ec34bd3
Author: Caitlin Potter <caitp@igalia.com>
Date: Wed Jul 05 14:56:18 2017

[ignition] handle catch prediction tracking entirely in BytecodeGenerator

Remove catch prediction tracking from AstNumbering, and replace it with
a similar mechanism in the BytecodeGenerator visitor.

BUG= v8:4483 ,  v8:5855 

Change-Id: I6351ba311716102fa55cd9ef29b9955ab4b11027
Reviewed-on: https://chromium-review.googlesource.com/559006
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Cr-Commit-Position: refs/heads/master@{#46419}
[modify] https://crrev.com/a7e5abff3424024f8938ec5c23467f481ec34bd3/src/ast/ast-numbering.cc
[modify] https://crrev.com/a7e5abff3424024f8938ec5c23467f481ec34bd3/src/ast/ast.h
[modify] https://crrev.com/a7e5abff3424024f8938ec5c23467f481ec34bd3/src/ast/prettyprinter.cc
[modify] https://crrev.com/a7e5abff3424024f8938ec5c23467f481ec34bd3/src/ast/prettyprinter.h
[modify] https://crrev.com/a7e5abff3424024f8938ec5c23467f481ec34bd3/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/a7e5abff3424024f8938ec5c23467f481ec34bd3/src/interpreter/bytecode-generator.h

Project Member

Comment 27 by bugdroid1@chromium.org, Jul 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d

commit 8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d
Author: Caitlin Potter <caitp@igalia.com>
Date: Fri Jul 14 08:57:51 2017

[async-await] desugar Await in BytecodeGenerator

This includes several changes. From most to least interesting:

- No longer implement AwaitExpressions using a do-expression.
- Reduces frame-size of async generators by not allocating temporary
  variables to hold results of Await epxressions.
- Streamline and reduce generated bytecodes for Await.
- Debugger no longer emits a debug::kCallBreakLocation breakpoint for
the JS-builtin call performed for Await, and instead only emits such
a breakpoint if the operand of Await is actually a call.
- Push fewer parameters to Await* builtins, using the receiver for the
  first parameter (possible now that the CallRuntime invocation not
  part of the AST).
- Adds a new Await AST node. No new members or anything, but it seemed
  palatable to avoid having `if (is_await())` in a number of
  VisitSuspend functions.

BUG= v8:5855 , v8:5099,  v8:4483 
R=rmcilroy@chromium.org, kozyatinskiy@chromium.org, yangguo@chromium.org
TBR=bmeurer@chromium.org

Change-Id: I9cd3fda99cd40295c04fdf1aea01b5d83fac6caf
Reviewed-on: https://chromium-review.googlesource.com/558806
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46666}
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/ast/ast-expression-rewriter.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/ast/ast-numbering.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/ast/ast-traversal-visitor.h
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/ast/ast.h
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/ast/prettyprinter.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/ast/scopes.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/ast/scopes.h
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/bootstrapper.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/builtins/builtins-async-function-gen.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/builtins/builtins-definitions.h
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/compiler/ast-graph-builder.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/compiler/ast-loop-assignment-analyzer.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/full-codegen/full-codegen.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/globals.h
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/interpreter/bytecode-generator.h
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/parsing/parser-base.h
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/parsing/parser.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/parsing/parser.h
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/parsing/pattern-rewriter.cc
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/src/parsing/preparser.h
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/test/inspector/debugger/break-locations-await-expected.txt
[modify] https://crrev.com/8b5b444a4c7b31648d4f0f70cf2a057ea4b0839d/test/inspector/debugger/get-possible-breakpoints-master-expected.txt

Project Member

Comment 28 by bugdroid1@chromium.org, Jul 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/53553f5dcbc725a48965d68b1d4c5671257242d8

commit 53553f5dcbc725a48965d68b1d4c5671257242d8
Author: Caitlin Potter <caitp@igalia.com>
Date: Fri Jul 14 16:09:53 2017

[generators] remove SuspendFlags enum and related code

SuspendFlags was originally used by the suspend operation to determine
which field to record the bytecode offset of a suspended generator, and
the value the generator was resumed with. For async generators, await
operations would use a separate field, in order to preserve the previous
yield input value. This was important to ensure `function.sent`
continued to function correctly.

As function.sent is being retired, this allows the removal of support
for that. Given that this was the only real need for SuspendFlags in the
first place (with other uses tacked on as a hack), this involves several
other changes as well:

- Modification of MacroAssembler AssertGeneratorObject. No longer
  accepts a SuspendFlags parameter to determine which type of check to
  perform.
- Removal of `flags` operand from SuspendGenerator bytecode, and the
  GeneratorStore js-operator.
- Removal of `flags` parameter from ResumeGeneratorTrampoline builtins.
- Removal of Runtime functions, interpreter intrinsics and
  AccessBuilders associated with the [[await_input_or_debug_pos]] field
  in JSAsyncGeneratorObject, as this field no longer exists.
- Addition of a new `Yield` AST node (subclass of Suspend) in order to
  prevent the need for the other SuspendFlag values.

BUG= v8:5855 
TBR=bmeurer@chromium.org

Change-Id: Iff2881e4742497fe5b774915e988c3d9d8fbe487
Reviewed-on: https://chromium-review.googlesource.com/570485
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46683}
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/arm/interface-descriptors-arm.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/arm/macro-assembler-arm.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/arm/macro-assembler-arm.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/arm64/interface-descriptors-arm64.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/arm64/macro-assembler-arm64.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/arm64/macro-assembler-arm64.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/ast/ast-expression-rewriter.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/ast/ast-numbering.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/ast/ast-traversal-visitor.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/ast/ast.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/ast/prettyprinter.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/builtins/arm/builtins-arm.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/builtins/arm64/builtins-arm64.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/builtins/builtins-async-function-gen.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/builtins/builtins-generator-gen.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/builtins/ia32/builtins-ia32.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/builtins/mips/builtins-mips.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/builtins/mips64/builtins-mips64.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/builtins/x64/builtins-x64.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/compiler/access-builder.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/compiler/access-builder.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/compiler/ast-graph-builder.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/compiler/ast-loop-assignment-analyzer.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/compiler/bytecode-graph-builder.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/compiler/js-create-lowering.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/compiler/js-intrinsic-lowering.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/compiler/js-intrinsic-lowering.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/compiler/js-operator.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/compiler/js-operator.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/compiler/js-typed-lowering.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/full-codegen/arm/full-codegen-arm.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/full-codegen/arm64/full-codegen-arm64.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/full-codegen/full-codegen.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/full-codegen/ia32/full-codegen-ia32.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/full-codegen/mips/full-codegen-mips.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/full-codegen/mips64/full-codegen-mips64.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/full-codegen/x64/full-codegen-x64.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/globals.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/ia32/interface-descriptors-ia32.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/ia32/macro-assembler-ia32.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/ia32/macro-assembler-ia32.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/interpreter/bytecode-array-builder.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/interpreter/bytecode-array-builder.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/interpreter/bytecode-flags.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/interpreter/bytecode-flags.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/interpreter/bytecode-generator.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/interpreter/bytecodes.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/interpreter/interpreter-generator.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/interpreter/interpreter-intrinsics-generator.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/interpreter/interpreter-intrinsics.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/mips/interface-descriptors-mips.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/mips/macro-assembler-mips.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/mips/macro-assembler-mips.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/mips64/interface-descriptors-mips64.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/mips64/macro-assembler-mips64.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/mips64/macro-assembler-mips64.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/objects-inl.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/objects.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/objects.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/parsing/parser-base.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/parsing/parser.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/parsing/parser.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/parsing/pattern-rewriter.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/parsing/preparser.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/runtime/runtime-generator.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/runtime/runtime.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/x64/interface-descriptors-x64.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/x64/macro-assembler-x64.cc
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/src/x64/macro-assembler-x64.h
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/test/cctest/interpreter/bytecode_expectations/Generators.golden
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/test/cctest/interpreter/bytecode_expectations/Modules.golden
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden
[modify] https://crrev.com/53553f5dcbc725a48965d68b1d4c5671257242d8/test/unittests/interpreter/bytecode-array-builder-unittest.cc

Project Member

Comment 29 by bugdroid1@chromium.org, Jul 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/00681326a3b946503023466ad59d99556c777e36

commit 00681326a3b946503023466ad59d99556c777e36
Author: Caitlin Potter <caitp@igalia.com>
Date: Fri Jul 21 16:48:57 2017

[interpreter] refactor BuildGeneratorSuspend/Resume into BuildSuspendPoint

Simplify the model for generating Awaits, because the resume point is
always immediately following the suspend point, and registers used are
always the same for both operations.

Includes a minor refactoring of BytecodeGenerator::VisitYield() to
perform iterator result creation before the SuspendGenerator bytecode,
rather than between SuspendGenerator and Return. This adds a small
number of bytecodes for each yield.

BUG= v8:2355 ,  v8:5855 

Change-Id: I4868b89a6bc1b251f887d2a45890c8fa19f7b089
Reviewed-on: https://chromium-review.googlesource.com/576286
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Cr-Commit-Position: refs/heads/master@{#46820}
[modify] https://crrev.com/00681326a3b946503023466ad59d99556c777e36/src/ast/ast.h
[modify] https://crrev.com/00681326a3b946503023466ad59d99556c777e36/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/00681326a3b946503023466ad59d99556c777e36/src/interpreter/bytecode-generator.h
[modify] https://crrev.com/00681326a3b946503023466ad59d99556c777e36/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden
[modify] https://crrev.com/00681326a3b946503023466ad59d99556c777e36/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden
[modify] https://crrev.com/00681326a3b946503023466ad59d99556c777e36/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden
[modify] https://crrev.com/00681326a3b946503023466ad59d99556c777e36/test/cctest/interpreter/bytecode_expectations/Generators.golden
[modify] https://crrev.com/00681326a3b946503023466ad59d99556c777e36/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden

Project Member

Comment 30 by bugdroid1@chromium.org, Jul 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/409f84c93b50e37eee15884157fee8292381761e

commit 409f84c93b50e37eee15884157fee8292381761e
Author: Caitlin Potter <caitp@igalia.com>
Date: Mon Jul 31 14:15:49 2017

[async-iteration] implement spec-change to `yield` in async generators

Per https://github.com/tc39/proposal-async-iteration/pull/102/files:

AsyncGeneratorResolve no longer unwraps a value component. Instead, the
value is unwrapped before the builtin call via Await, allowing Promise
rejections to affect the generator control flow.

Thus, all `yield <expr>` implicitly become `yield await <expr>`.

Additionally, `return <expr>` becomes `return await <expr>`. Finally, when
the generator is resumed with `.return()`, the parameter passed to .return()
is awaited before generator execution properly continues).

BUG= v8:5855 
R=littledan@chromium.org, neis@chromium.org, adamk@chromium.org

Cq-Include-Trybots: master.tryserver.v8:v8_linux_noi18n_rel_ng
Change-Id: Ife084076c3ed434b5467e6aeba14082f8b410ad5
Reviewed-on: https://chromium-review.googlesource.com/523844
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47011}
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/src/ast/ast-numbering.cc
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/src/ast/ast.h
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/src/bootstrapper.cc
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/src/builtins/builtins-definitions.h
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/src/contexts.h
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/src/interpreter/bytecode-generator.h
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/src/parsing/parser-base.h
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/src/parsing/parser.cc
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden
[add] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/test/mjsunit/harmony/async-generators-resume-return.js
[add] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/test/mjsunit/harmony/async-generators-return.js
[add] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/test/mjsunit/harmony/async-generators-yield.js
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/test/mjsunit/mjsunit.js
[modify] https://crrev.com/409f84c93b50e37eee15884157fee8292381761e/test/test262/test262.status

Project Member

Comment 31 by bugdroid1@chromium.org, Jul 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3

commit 2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3
Author: Michael Achenbach <machenbach@chromium.org>
Date: Mon Jul 31 15:23:56 2017

Revert "[async-iteration] implement spec-change to `yield` in async generators"

This reverts commit 409f84c93b50e37eee15884157fee8292381761e.

Reason for revert: Breaks nosnap debug:
https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap%20-%20debug/builds/14288

Original change's description:
> [async-iteration] implement spec-change to `yield` in async generators
> 
> Per https://github.com/tc39/proposal-async-iteration/pull/102/files:
> 
> AsyncGeneratorResolve no longer unwraps a value component. Instead, the
> value is unwrapped before the builtin call via Await, allowing Promise
> rejections to affect the generator control flow.
> 
> Thus, all `yield <expr>` implicitly become `yield await <expr>`.
> 
> Additionally, `return <expr>` becomes `return await <expr>`. Finally, when
> the generator is resumed with `.return()`, the parameter passed to .return()
> is awaited before generator execution properly continues).
> 
> BUG= v8:5855 
> R=​littledan@chromium.org, neis@chromium.org, adamk@chromium.org
> 
> Cq-Include-Trybots: master.tryserver.v8:v8_linux_noi18n_rel_ng
> Change-Id: Ife084076c3ed434b5467e6aeba14082f8b410ad5
> Reviewed-on: https://chromium-review.googlesource.com/523844
> Commit-Queue: Caitlin Potter <caitp@igalia.com>
> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
> Reviewed-by: Georg Neis <neis@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#47011}

TBR=rmcilroy@chromium.org,adamk@chromium.org,yangguo@chromium.org,neis@chromium.org,littledan@chromium.org,gsathya@chromium.org,caitp@igalia.com

Change-Id: Ie6ad7e5410a3a89aab7a5dc68de36eb27b9354fe
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  v8:5855 
Cq-Include-Trybots: master.tryserver.v8:v8_linux_noi18n_rel_ng
Reviewed-on: https://chromium-review.googlesource.com/593952
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47013}
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/src/ast/ast-numbering.cc
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/src/ast/ast.h
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/src/bootstrapper.cc
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/src/builtins/builtins-definitions.h
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/src/contexts.h
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/src/interpreter/bytecode-generator.h
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/src/parsing/parser-base.h
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/src/parsing/parser.cc
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden
[delete] https://crrev.com/17a26c0bc7041fa7621ac672ff80728b804ec29e/test/mjsunit/harmony/async-generators-resume-return.js
[delete] https://crrev.com/17a26c0bc7041fa7621ac672ff80728b804ec29e/test/mjsunit/harmony/async-generators-return.js
[delete] https://crrev.com/17a26c0bc7041fa7621ac672ff80728b804ec29e/test/mjsunit/harmony/async-generators-yield.js
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/test/mjsunit/mjsunit.js
[modify] https://crrev.com/2d79d2c3a73aa1abe8f02bdee32683cb3a84fdf3/test/test262/test262.status

Project Member

Comment 32 by bugdroid1@chromium.org, Aug 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e

commit ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e
Author: Caitlin Potter <caitp@igalia.com>
Date: Tue Aug 01 18:39:26 2017

Reland "[async-iteration] implement spec-change to `yield` in async generators"

Per https://github.com/tc39/proposal-async-iteration/pull/102/files:

AsyncGeneratorResolve no longer unwraps a value component. Instead, the value is
unwrapped before the builtin call via Await, allowing Promise rejections to
affect the generator control flow.

Thus, all `yield <expr>` implicitly become `yield await <expr>`.

Additionally, `return <expr>` becomes `return await <expr>`. Finally, when the
generator is resumed with `.return()`, the parameter passed to .return() is
awaited before generator execution properly continues).

BUG= v8:6187 ,  v8:5855 
R=littledan@chromium.org, neis@chromium.org, adamk@chromium.org
TBR=rmcilroy@chromium.org, neis@chromium.org

Cq-Include-Trybots: master.tryserver.v8:v8_linux_noi18n_rel_ng
Change-Id: Id7718028fd555481f9f4ca0dbecfa788e3057c48
Reviewed-on: https://chromium-review.googlesource.com/594500
Reviewed-by: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Cr-Commit-Position: refs/heads/master@{#47058}
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/src/ast/ast-numbering.cc
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/src/ast/ast.h
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/src/bootstrapper.cc
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/src/builtins/builtins-definitions.h
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/src/code-stub-assembler.cc
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/src/code-stub-assembler.h
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/src/contexts.h
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/src/interpreter/bytecode-generator.h
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/src/parsing/parser-base.h
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/src/parsing/parser.cc
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/test/cctest/interpreter/bytecode_expectations/ForAwaitOf.golden
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/test/cctest/interpreter/bytecode_expectations/ForOfLoop.golden
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/test/cctest/interpreter/bytecode_expectations/StandardForLoop.golden
[add] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/test/mjsunit/harmony/async-generators-resume-return.js
[add] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/test/mjsunit/harmony/async-generators-return.js
[add] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/test/mjsunit/harmony/async-generators-yield.js
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/test/mjsunit/mjsunit.js
[modify] https://crrev.com/ac6ed35a31ab7a0aa3a49ad1e9a4ccae54069f6e/test/test262/test262.status

Project Member

Comment 33 by bugdroid1@chromium.org, Aug 8 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a094e360e980a53b1a203e4ca4519ca91efcf2d7

commit a094e360e980a53b1a203e4ca4519ca91efcf2d7
Author: Caitlin Potter <caitp@igalia.com>
Date: Tue Aug 08 14:18:08 2017

[async-iteration] eliminate Suspend for AsyncGeneratorYield await

A spec change (https://github.com/tc39/proposal-async-iteration/commit/a0dfeba1a8029012b6e964099929b8a157818c9f) introduced a number of Await operations to the spec. In turn, this caused generated bytecode for async generators to grow drastically.

This commit moves the Await within AsyncGeneratorYield (https://tc39.github.io/proposal-async-iteration/#sec-asyncgeneratoryield step 5) into a new TFJ builtin, similar in structure to AsyncGeneratorAwait, but instead of resuming the generator on resolution of the Promise, the current generator request's Promise is fulfilled instead.

This results in a reduction in generated bytecode without losing any statically available information.

BUG= v8:5855 

Change-Id: Ib5bcf06132d221beffdea30639a7b4437030143b
Reviewed-on: https://chromium-review.googlesource.com/582487
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47224}
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/bootstrapper.cc
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/builtins/builtins-async-gen.cc
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/builtins/builtins-async-gen.h
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/builtins/builtins-definitions.h
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/compiler/js-intrinsic-lowering.cc
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/compiler/js-intrinsic-lowering.h
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/contexts.h
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/interpreter/bytecode-array-builder.cc
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/interpreter/bytecode-array-builder.h
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/interpreter/interpreter-intrinsics-generator.cc
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/interpreter/interpreter-intrinsics.h
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/parsing/parser-base.h
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/runtime/runtime-generator.cc
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/src/runtime/runtime.h
[modify] https://crrev.com/a094e360e980a53b1a203e4ca4519ca91efcf2d7/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden

Project Member

Comment 34 by bugdroid1@chromium.org, Aug 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/fa1a339777307f959b5b665e57f6f466385d6008

commit fa1a339777307f959b5b665e57f6f466385d6008
Author: Caitlin Potter <caitp@igalia.com>
Date: Wed Aug 09 14:53:14 2017

[async-iteration] eliminate implicit Await when resuming with .return()

AsyncGenerators, when resumed with a "return" completion, Await the sent
value to provide consistency with syntactic return statements. This
moves the await to during AsyncGeneratorResumeNext, shrinking the number
of bytecodes.

There's a minor change to BytecodeGenerator which removes a
%_GeneratorClose() call, since it's inserted implicitly by the parser.

BUG= v8:5855 
TBR=neis@chromium.org

Change-Id: I2965c610e5985ac24c713b481e62f6b97f96a3d8
Reviewed-on: https://chromium-review.googlesource.com/582218
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47253}
[modify] https://crrev.com/fa1a339777307f959b5b665e57f6f466385d6008/src/ast/ast-numbering.cc
[modify] https://crrev.com/fa1a339777307f959b5b665e57f6f466385d6008/src/ast/ast.h
[modify] https://crrev.com/fa1a339777307f959b5b665e57f6f466385d6008/src/bootstrapper.cc
[modify] https://crrev.com/fa1a339777307f959b5b665e57f6f466385d6008/src/builtins/builtins-async-gen.cc
[modify] https://crrev.com/fa1a339777307f959b5b665e57f6f466385d6008/src/builtins/builtins-async-gen.h
[modify] https://crrev.com/fa1a339777307f959b5b665e57f6f466385d6008/src/builtins/builtins-async-generator-gen.cc
[modify] https://crrev.com/fa1a339777307f959b5b665e57f6f466385d6008/src/builtins/builtins-definitions.h
[modify] https://crrev.com/fa1a339777307f959b5b665e57f6f466385d6008/src/contexts.h
[modify] https://crrev.com/fa1a339777307f959b5b665e57f6f466385d6008/src/interpreter/bytecode-generator.cc
[modify] https://crrev.com/fa1a339777307f959b5b665e57f6f466385d6008/src/runtime/runtime-generator.cc
[modify] https://crrev.com/fa1a339777307f959b5b665e57f6f466385d6008/src/runtime/runtime.h
[modify] https://crrev.com/fa1a339777307f959b5b665e57f6f466385d6008/test/cctest/interpreter/bytecode_expectations/AsyncGenerators.golden

Project Member

Comment 35 by bugdroid1@chromium.org, Aug 16 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e08cdc277ba089ca6ff01682eb877af9b1cdec38

commit e08cdc277ba089ca6ff01682eb877af9b1cdec38
Author: Caitlin Potter <caitp@igalia.com>
Date: Wed Aug 16 20:06:45 2017

Stage --harmony-async-iteration

Bug:  v8:5855 
Change-Id: Ie783318b2297f85a9f102e1266dfc1fac406435a
Reviewed-on: https://chromium-review.googlesource.com/466107
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47384}
[modify] https://crrev.com/e08cdc277ba089ca6ff01682eb877af9b1cdec38/src/flag-definitions.h

Project Member

Comment 36 by bugdroid1@chromium.org, Sep 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/88a4cf736ef10b213d2e29a841ac73934b8eccc7

commit 88a4cf736ef10b213d2e29a841ac73934b8eccc7
Author: Caitlin Potter <caitp@igalia.com>
Date: Mon Sep 18 15:15:07 2017

[esnext] ship --harmony-async-iteration

Enable --harmony-async-iteration (Symbol.asyncIterator, async generator
syntax, and for-await-of syntax) by default, as discussed in
https://groups.google.com/forum/#!topic/v8-users/SlLEsgNv4JY

BUG= v8:5855 
R=adamk@chromium.org, gsathya@chromium.org

Change-Id: I77a77124a68813431daceca1b0cbaec5af271fee
Reviewed-on: https://chromium-review.googlesource.com/668877
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Adam Klein <adamk@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48068}
[modify] https://crrev.com/88a4cf736ef10b213d2e29a841ac73934b8eccc7/src/flag-definitions.h

Project Member

Comment 37 by bugdroid1@chromium.org, Oct 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/f3fb1b77989fe6fd1158062fbc1c405549bd4b76

commit f3fb1b77989fe6fd1158062fbc1c405549bd4b76
Author: Caitlin Potter <caitp@igalia.com>
Date: Wed Oct 04 16:15:59 2017

[esnext] initialize native_context()->initial_async_generator_prototype

Fix an error overwriting the `prototype` property of async generator
functions when FLAG_enable_slow_asserts is enabled.

Previously, the `initial_async_generator_prototype` field was never
written to the native context, and was always undefined. This caused
some incorrect runtime behaviour, and would crash when loading the field
using the Context::initial_aysnc_generator_prototype accessor when
attempting to cast the Undefined oddball to a JSObject.

BUG= chromium:771470 ,  v8:5855 
R=adamk@chromium.org, verwaest@chromium.org, gsathya@chromium.org

Change-Id: I13f2a518c59852bc77c2de1f2468a4eea457609e
Reviewed-on: https://chromium-review.googlesource.com/700261
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Cr-Commit-Position: refs/heads/master@{#48291}
[modify] https://crrev.com/f3fb1b77989fe6fd1158062fbc1c405549bd4b76/src/bootstrapper.cc
[add] https://crrev.com/f3fb1b77989fe6fd1158062fbc1c405549bd4b76/test/mjsunit/harmony/regress/regress-771470.js

Project Member

Comment 38 by bugdroid1@chromium.org, Oct 10 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/9f0bdf044fc8ba7dd8e3b455d01a055cf698d96f

commit 9f0bdf044fc8ba7dd8e3b455d01a055cf698d96f
Author: Caitlin Potter <caitp@igalia.com>
Date: Tue Oct 10 11:18:10 2017

[esnext] fix MaterializeCapturedObjectAt for async generator objects

Previously, JS_ASYNC_GENERATOR_OBJECT_TYPE maps led to an UNREACHABLE
macro, but are now restored like ordinary JSGeneratorObjects.

BUG= chromium:772649 ,  v8:5855 
R=adamk@chromium.org, yangguo@chromium.org, verwaest@chromium.org

Change-Id: I02e101565625f8a057d0e5b242a5fe0df263df89
Reviewed-on: https://chromium-review.googlesource.com/706780
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#48423}
[modify] https://crrev.com/9f0bdf044fc8ba7dd8e3b455d01a055cf698d96f/src/deoptimizer.cc
[add] https://crrev.com/9f0bdf044fc8ba7dd8e3b455d01a055cf698d96f/test/mjsunit/harmony/regress/regress-772649.js

Project Member

Comment 39 by bugdroid1@chromium.org, Jan 12

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/49898aad76cb2101e599078eb8d4e55836969484

commit 49898aad76cb2101e599078eb8d4e55836969484
Author: Adam Klein <adamk@chromium.org>
Date: Fri Jan 12 20:14:34 2018

Remove always-true --harmony-async-iteration runtime flag

It was shipped in Chrome 63.

Bug:  v8:5855 
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Change-Id: Icc00b8300622d1c7b5662be8ac5e425b9781f666
Reviewed-on: https://chromium-review.googlesource.com/858381
Commit-Queue: Adam Klein <adamk@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50558}
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/src/bootstrapper.cc
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/src/flag-definitions.h
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/src/parsing/parser-base.h
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/src/parsing/parser.cc
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/src/parsing/parser.h
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/cctest/interpreter/generate-bytecode-expectations.cc
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/cctest/interpreter/test-bytecode-generator.cc
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/cctest/test-parsing.cc
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/inspector/debugger/async-for-await-of-promise-stack.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/code-coverage-block-noopt.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/code-coverage-block-opt.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/code-coverage-block.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/es6/computed-property-names-object-literals-methods.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/es6/reflect-construct.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/harmony/async-for-of-non-iterable.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/harmony/async-from-sync-iterator.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/harmony/async-generators-basic.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/harmony/async-generators-resume-return.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/harmony/async-generators-return.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/harmony/async-generators-yield.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/harmony/for-await-of.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/harmony/regress/regress-6322.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/harmony/regress/regress-772649.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/mjsunit/harmony/symbol-async-iterator.js
[modify] https://crrev.com/49898aad76cb2101e599078eb8d4e55836969484/test/test262/testcfg.py

Project Member

Comment 40 by bugdroid1@chromium.org, Feb 2

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/6b1586e32bbef4d4352292a9053a9cbbe000bd97

commit 6b1586e32bbef4d4352292a9053a9cbbe000bd97
Author: Caitlin Potter <caitp@igalia.com>
Date: Fri Feb 02 16:57:12 2018

[esnext] only load .next() once for JSAsyncFromSyncIterator

A version of the spec change from
https://github.com/tc39/ecma262/pull/988, but applied to the
Async-from-Sync iterator type.

This change does not modify generated bytecode (but maybe it should to
take advantage of load IC feedback for loading "next"). Doing this grows
bytecode by quite a bit, since it's necessary to throw-if-not-an-object
before loading "next" (which currently gets to live in a code stub
instead).

BUG= v8:5855 

Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Change-Id: I0d2affef664d1069b24c54a553d62e17b49e5a16
Reviewed-on: https://chromium-review.googlesource.com/723136
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#51078}
[modify] https://crrev.com/6b1586e32bbef4d4352292a9053a9cbbe000bd97/src/builtins/builtins-async-iterator-gen.cc
[modify] https://crrev.com/6b1586e32bbef4d4352292a9053a9cbbe000bd97/src/factory.cc
[modify] https://crrev.com/6b1586e32bbef4d4352292a9053a9cbbe000bd97/src/factory.h
[modify] https://crrev.com/6b1586e32bbef4d4352292a9053a9cbbe000bd97/src/interpreter/interpreter-intrinsics-generator.cc
[modify] https://crrev.com/6b1586e32bbef4d4352292a9053a9cbbe000bd97/src/objects-inl.h
[modify] https://crrev.com/6b1586e32bbef4d4352292a9053a9cbbe000bd97/src/objects.h
[modify] https://crrev.com/6b1586e32bbef4d4352292a9053a9cbbe000bd97/src/runtime/runtime-internal.cc
[modify] https://crrev.com/6b1586e32bbef4d4352292a9053a9cbbe000bd97/test/mjsunit/harmony/async-from-sync-iterator.js
[modify] https://crrev.com/6b1586e32bbef4d4352292a9053a9cbbe000bd97/test/test262/test262.status

Now that we've shipped this feature, can this be closed?
Status: Fixed (was: Assigned)

Sign in to add a comment