|
Track the 'awaiter return' call stack use it to detect uncaught exceptions in async functions
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
Fixes #27242
R=rmacnak@google.com
Committed: https://github.com/dart-lang/sdk/commit/cba7e3e79adf41814060119bb61faff7bb658865
Total comments: 15
Total comments: 4
Total comments: 14
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+770 lines, -67 lines) |
Patch |
![](/static/closedtriangle.gif) |
M |
runtime/lib/async_patch.dart
|
View
|
1
2
3
4
|
4 chunks |
+37 lines, -3 lines |
4 comments
|
Download
|
![](/static/closedtriangle.gif) |
A |
runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart
|
View
|
1
2
3
4
|
1 chunk |
+53 lines, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
A |
runtime/observatory/tests/service/pause_on_unhandled_async_exceptions_test.dart
|
View
|
1
2
|
1 chunk |
+65 lines, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/ast.h
|
View
|
1
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/ast_transformer.cc
|
View
|
|
3 chunks |
+9 lines, -2 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/code_descriptors.h
|
View
|
1
2
|
4 chunks |
+8 lines, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/code_descriptors.cc
|
View
|
1
2
|
1 chunk |
+4 lines, -2 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/compiler.cc
|
View
|
1
2
3
4
|
1 chunk |
+28 lines, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/debugger.h
|
View
|
1
2
|
6 chunks |
+25 lines, -6 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/debugger.cc
|
View
|
1
2
3
4
5
6
|
9 chunks |
+358 lines, -34 lines |
8 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/exceptions.h
|
View
|
1
2
3
4
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/flow_graph.h
|
View
|
1
2
3
4
|
2 chunks |
+10 lines, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/flow_graph.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/flow_graph_builder.h
|
View
|
|
2 chunks |
+7 lines, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/flow_graph_builder.cc
|
View
|
1
2
3
4
5
6
|
5 chunks |
+13 lines, -1 line |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/flow_graph_compiler.h
|
View
|
1
2
3
4
5
6
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/flow_graph_compiler.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+4 lines, -1 line |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/intermediate_language.h
|
View
|
1
2
3
4
5
6
|
4 chunks |
+11 lines, -2 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/intermediate_language_arm.cc
|
View
|
1
2
3
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/intermediate_language_arm64.cc
|
View
|
1
2
3
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/intermediate_language_dbc.cc
|
View
|
1
2
3
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/intermediate_language_ia32.cc
|
View
|
1
2
3
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/intermediate_language_mips.cc
|
View
|
1
2
3
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/intermediate_language_x64.cc
|
View
|
1
2
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/kernel_to_il.cc
|
View
|
1
2
3
4
|
1 chunk |
+2 lines, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/object.h
|
View
|
1
2
3
4
5
6
|
2 chunks |
+14 lines, -1 line |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/object.cc
|
View
|
1
2
3
4
5
6
|
6 chunks |
+15 lines, -4 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/object_service.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+5 lines, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/object_test.cc
|
View
|
1
2
3
4
5
6
|
1 chunk |
+8 lines, -4 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/parser.cc
|
View
|
1
2
3
4
5
6
|
8 chunks |
+63 lines, -6 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/raw_object.h
|
View
|
1
2
3
4
5
6
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/scopes.cc
|
View
|
|
1 chunk |
+12 lines, -0 lines |
0 comments
|
Download
|
![](/static/closedtriangle.gif) |
M |
runtime/vm/symbols.h
|
View
|
1
|
4 chunks |
+7 lines, -1 line |
2 comments
|
Download
|
Total messages: 17 (7 generated)
|