OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include <map> | 5 #include <map> |
6 #include <set> | 6 #include <set> |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "vm/kernel_to_il.h" | 9 #include "vm/kernel_to_il.h" |
10 | 10 |
(...skipping 3165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3176 VariableDeclaration* variable = named[i]; | 3176 VariableDeclaration* variable = named[i]; |
3177 body += LoadLocal(LookupVariable(variable)); | 3177 body += LoadLocal(LookupVariable(variable)); |
3178 body += CheckVariableTypeInCheckedMode(variable); | 3178 body += CheckVariableTypeInCheckedMode(variable); |
3179 body += Drop(); | 3179 body += Drop(); |
3180 } | 3180 } |
3181 } | 3181 } |
3182 | 3182 |
3183 if (FLAG_causal_async_stacks && | 3183 if (FLAG_causal_async_stacks && |
3184 (dart_function.IsAsyncFunction() || dart_function.IsAsyncGenerator())) { | 3184 (dart_function.IsAsyncFunction() || dart_function.IsAsyncGenerator())) { |
3185 LocalScope* scope = parsed_function_->node_sequence()->scope(); | 3185 LocalScope* scope = parsed_function_->node_sequence()->scope(); |
3186 // :async_stack_trace = _asyncStackTraceHelper(); | 3186 // :async_stack_trace = _asyncStackTraceHelper(:async_op); |
3187 const dart::Library& async_lib = | 3187 const dart::Library& async_lib = |
3188 dart::Library::Handle(dart::Library::AsyncLibrary()); | 3188 dart::Library::Handle(dart::Library::AsyncLibrary()); |
3189 const Function& target = Function::ZoneHandle( | 3189 const Function& target = Function::ZoneHandle( |
3190 Z, | 3190 Z, |
3191 async_lib.LookupFunctionAllowPrivate(Symbols::AsyncStackTraceHelper())); | 3191 async_lib.LookupFunctionAllowPrivate(Symbols::AsyncStackTraceHelper())); |
3192 ASSERT(!target.IsNull()); | 3192 ASSERT(!target.IsNull()); |
3193 | 3193 |
| 3194 // TODO(johnmccutchan): Why does this have the null value? |
3194 LocalVariable* async_op = | 3195 LocalVariable* async_op = |
3195 scope->LookupVariable(Symbols::AsyncOperation(), true); | 3196 scope->child()->LookupVariable(Symbols::AsyncOperation(), false); |
3196 ASSERT(async_op != NULL); | 3197 ASSERT(async_op != NULL); |
| 3198 ASSERT(async_op->is_captured()); |
3197 body += LoadLocal(async_op); | 3199 body += LoadLocal(async_op); |
3198 body += PushArgument(); | 3200 body += PushArgument(); |
3199 body += StaticCall(TokenPosition::kNoSource, target, 1); | 3201 body += StaticCall(TokenPosition::kNoSource, target, 1); |
3200 LocalVariable* async_stack_trace_var = | 3202 LocalVariable* async_stack_trace_var = |
3201 scope->LookupVariable(Symbols::AsyncStackTraceVar(), false); | 3203 scope->LookupVariable(Symbols::AsyncStackTraceVar(), false); |
3202 ASSERT(async_stack_trace_var != NULL); | 3204 ASSERT(async_stack_trace_var != NULL); |
3203 body += StoreLocal(TokenPosition::kNoSource, async_stack_trace_var); | 3205 body += StoreLocal(TokenPosition::kNoSource, async_stack_trace_var); |
3204 body += Drop(); | 3206 body += Drop(); |
3205 } | 3207 } |
3206 | 3208 |
(...skipping 3249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6456 thread->clear_sticky_error(); | 6458 thread->clear_sticky_error(); |
6457 return error.raw(); | 6459 return error.raw(); |
6458 } | 6460 } |
6459 } | 6461 } |
6460 | 6462 |
6461 | 6463 |
6462 } // namespace kernel | 6464 } // namespace kernel |
6463 } // namespace dart | 6465 } // namespace dart |
6464 | 6466 |
6465 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 6467 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
OLD | NEW |