025bfc858e
Previously there was a window between the decision to resume generator and actually running the micro-task. The stream could be canceled during that window, making running the generator incorrect. The solution is to check if the stream was canceled right before resuming the generator in yield/yield*. This change also unifies yield and yield* to check if the stream was canceled even before suspending the generator. TEST=language/async_star/cancel_while_paused_test, language/async_star/cancel_while_paused_at_yield_test Fixes https://github.com/dart-lang/sdk/issues/49451 Change-Id: Ib8ff3a2da9a6a7da8766a7dbf28e2c9d618728f9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/251562 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
Dart VM Compilation Pipeline
This folder contains Dart VM compilation pipeline.
Compilation pipeline is mainly responsible for converting AST or Kernel AST into IL flow graphs and then generating native code from IL.
It has the following structure:
| Directory | What goes there |
|---|---|
assembler/ |
Assemblers and disassemblers |
backend/ |
IL based compilation backend: optimization passes and architecture specific code generation rules |
frontend/ |
Frontends responsible for converting AST into IL |
jit/ |
JIT specific passes and compilation pipeline entry points |
aot/ |
AOT specific passes and compilation pipeline entry points |
. |
Shared code or code without clear designation. |
Currently there are no layering restrictions and components from different subfolders can reference each other.