| 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 2259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2270 } | 2270 } |
| 2271 | 2271 |
| 2272 | 2272 |
| 2273 Fragment FlowGraphBuilder::CatchBlockEntry(const Array& handler_types, | 2273 Fragment FlowGraphBuilder::CatchBlockEntry(const Array& handler_types, |
| 2274 intptr_t handler_index) { | 2274 intptr_t handler_index) { |
| 2275 ASSERT(CurrentException()->is_captured() == | 2275 ASSERT(CurrentException()->is_captured() == |
| 2276 CurrentStackTrace()->is_captured()); | 2276 CurrentStackTrace()->is_captured()); |
| 2277 const bool should_restore_closure_context = | 2277 const bool should_restore_closure_context = |
| 2278 CurrentException()->is_captured() || CurrentCatchContext()->is_captured(); | 2278 CurrentException()->is_captured() || CurrentCatchContext()->is_captured(); |
| 2279 CatchBlockEntryInstr* entry = new (Z) CatchBlockEntryInstr( | 2279 CatchBlockEntryInstr* entry = new (Z) CatchBlockEntryInstr( |
| 2280 TokenPosition::kNoSource, // Token position of catch block. |
| 2281 false, // Not an artifact of compilation. |
| 2280 AllocateBlockId(), CurrentTryIndex(), graph_entry_, handler_types, | 2282 AllocateBlockId(), CurrentTryIndex(), graph_entry_, handler_types, |
| 2281 handler_index, *CurrentException(), *CurrentStackTrace(), | 2283 handler_index, *CurrentException(), *CurrentStackTrace(), |
| 2282 /* needs_stacktrace = */ true, H.thread()->GetNextDeoptId(), | 2284 /* needs_stacktrace = */ true, H.thread()->GetNextDeoptId(), |
| 2283 should_restore_closure_context); | 2285 should_restore_closure_context); |
| 2284 graph_entry_->AddCatchEntry(entry); | 2286 graph_entry_->AddCatchEntry(entry); |
| 2285 Fragment instructions(entry); | 2287 Fragment instructions(entry); |
| 2286 | 2288 |
| 2287 // :saved_try_context_var can be captured in the context of | 2289 // :saved_try_context_var can be captured in the context of |
| 2288 // of the closure, in this case CatchBlockEntryInstr restores | 2290 // of the closure, in this case CatchBlockEntryInstr restores |
| 2289 // :current_context_var to point to closure context in the | 2291 // :current_context_var to point to closure context in the |
| (...skipping 4092 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6382 thread->clear_sticky_error(); | 6384 thread->clear_sticky_error(); |
| 6383 return error.raw(); | 6385 return error.raw(); |
| 6384 } | 6386 } |
| 6385 } | 6387 } |
| 6386 | 6388 |
| 6387 | 6389 |
| 6388 } // namespace kernel | 6390 } // namespace kernel |
| 6389 } // namespace dart | 6391 } // namespace dart |
| 6390 | 6392 |
| 6391 #endif // !defined(DART_PRECOMPILED_RUNTIME) | 6393 #endif // !defined(DART_PRECOMPILED_RUNTIME) |
| OLD | NEW |