| Index: runtime/vm/flow_graph.cc
|
| ===================================================================
|
| --- runtime/vm/flow_graph.cc (revision 41095)
|
| +++ runtime/vm/flow_graph.cc (working copy)
|
| @@ -41,7 +41,9 @@
|
| loop_headers_(NULL),
|
| loop_invariant_loads_(NULL),
|
| guarded_fields_(builder.guarded_fields()),
|
| - deferred_prefixes_(builder.deferred_prefixes()) {
|
| + deferred_prefixes_(builder.deferred_prefixes()),
|
| + captured_parameters_(
|
| + new(isolate_) BitVector(isolate_, variable_count())) {
|
| DiscoverBlocks();
|
| }
|
|
|
| @@ -959,6 +961,14 @@
|
| if (variable_liveness->IsLastLoad(block_entry, load)) {
|
| (*env)[index] = constant_dead();
|
| }
|
| +
|
| + // Record captured parameters so that they can be skipped when
|
| + // emitting sync code inside optimized try-blocks.
|
| + if (load->local().is_captured_parameter()) {
|
| + intptr_t index = load->local().BitIndexIn(num_non_copied_params_);
|
| + captured_parameters_->Add(index);
|
| + }
|
| +
|
| } else if (push != NULL) {
|
| result = push->value()->definition();
|
| env->Add(result);
|
|
|