Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(434)

Issue 2725623003: Reland "Track the 'awaiter return' call stack..." (Closed)

Created:
3 years, 9 months ago by Kevin Millikin (Google)
Modified:
3 years, 9 months ago
CC:
reviews_dartlang.org, turnidge, rmacnak, vm-dev_dartlang.org
Target Ref:
refs/heads/master
Visibility:
Public.

Description

Reland "Track the 'awaiter return' call stack..." Original CL: https://codereview.chromium.org/2692803006/ Original commit message: Tracking the awaiter return call stack: - [x] Each async function closure now knows who is awaiting on their return. This is effectively the asynchronous equivalent of the 'frame pointer'. - [x] Each async* function closure now knows how is listening on their stream. This is effectively the asynchronous equivalent of the 'frame pointer'. Detecting uncaught exceptions in async functions: - [x] Code object keeps a map from :await_jump_var to token position - [x] Exception Handlers keep track if they are generated (as part of compilation) or directly from user code - [x] Debugger maps :await_jump_var to a specific try index R=johnmccutchan@google.com Committed: https://github.com/dart-lang/sdk/commit/f31b6d5e2c370b7254fede0cb13a8d4311ba035e

Patch Set 1 #

Patch Set 2 : Update the Kernel continuation transformer #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+775 lines, -68 lines) Patch
M pkg/kernel/lib/transformations/async.dart View 1 1 chunk +2 lines, -1 line 0 comments Download
M runtime/lib/async_patch.dart View 4 chunks +37 lines, -3 lines 2 comments Download
A runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart View 1 chunk +53 lines, -0 lines 0 comments Download
A runtime/observatory/tests/service/pause_on_unhandled_async_exceptions_test.dart View 1 chunk +65 lines, -0 lines 0 comments Download
M runtime/vm/ast.h View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/ast_transformer.cc View 3 chunks +9 lines, -2 lines 0 comments Download
M runtime/vm/code_descriptors.h View 4 chunks +8 lines, -0 lines 0 comments Download
M runtime/vm/code_descriptors.cc View 1 chunk +4 lines, -2 lines 0 comments Download
M runtime/vm/compiler.cc View 1 chunk +28 lines, -0 lines 0 comments Download
M runtime/vm/debugger.h View 6 chunks +25 lines, -6 lines 0 comments Download
M runtime/vm/debugger.cc View 9 chunks +358 lines, -34 lines 0 comments Download
M runtime/vm/exceptions.h View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/flow_graph.h View 2 chunks +10 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph.cc View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/flow_graph_builder.h View 2 chunks +7 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_builder.cc View 5 chunks +13 lines, -1 line 0 comments Download
M runtime/vm/flow_graph_compiler.h View 1 chunk +2 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_compiler.cc View 1 chunk +4 lines, -1 line 0 comments Download
M runtime/vm/intermediate_language.h View 4 chunks +11 lines, -2 lines 0 comments Download
M runtime/vm/intermediate_language_arm.cc View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/intermediate_language_arm64.cc View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/intermediate_language_dbc.cc View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/intermediate_language_ia32.cc View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/intermediate_language_mips.cc View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/intermediate_language_x64.cc View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/kernel_to_il.cc View 1 chunk +2 lines, -0 lines 0 comments Download
M runtime/vm/object.h View 2 chunks +7 lines, -1 line 0 comments Download
M runtime/vm/object.cc View 7 chunks +23 lines, -4 lines 0 comments Download
M runtime/vm/object_service.cc View 1 chunk +7 lines, -0 lines 0 comments Download
M runtime/vm/object_test.cc View 1 chunk +8 lines, -4 lines 0 comments Download
M runtime/vm/parser.cc View 8 chunks +63 lines, -6 lines 0 comments Download
M runtime/vm/raw_object.h View 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/scopes.cc View 1 chunk +12 lines, -0 lines 0 comments Download
M runtime/vm/symbols.h View 4 chunks +7 lines, -1 line 0 comments Download

Messages

Total messages: 7 (2 generated)
Kevin Millikin (Google)
This includes support for `await` by calling _awaitHelper in dart:async with the correct arguments. It ...
3 years, 9 months ago (2017-02-28 15:07:21 UTC) #2
Cutch
LGTM and thanks!
3 years, 9 months ago (2017-02-28 15:08:31 UTC) #3
Kevin Millikin (Google)
Committed patchset #2 (id:20001) manually as f31b6d5e2c370b7254fede0cb13a8d4311ba035e (presubmit successful).
3 years, 9 months ago (2017-02-28 15:13:48 UTC) #5
kustermann
Kevin's change: LGTM @John: How does 'await for' work with non _Stream's? As opposed to ...
3 years, 9 months ago (2017-02-28 15:29:50 UTC) #6
Cutch
3 years, 9 months ago (2017-02-28 15:35:28 UTC) #7
Message was sent while issue was closed.
On 2017/02/28 15:29:50, kustermann wrote:
> Kevin's change: LGTM
> 
> @John: How does 'await for' work with non _Stream's? As opposed to Future's,
we
> actually do have different implementations of Stream, like Socket IIRC?
> 

Currently, these features only work for async* functions and await for loops. We
could probably patch the private field onto a base class or mixin and have it
work for more Stream implementations?

Powered by Google App Engine
This is Rietveld 408576698