| Index: runtime/vm/intermediate_language.h | 
| diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h | 
| index 731fecafea9e5ff468c11fafe74c19b467a1ec55..b0705d4e801c76cdb841e1f82c4d87130a752500 100644 | 
| --- a/runtime/vm/intermediate_language.h | 
| +++ b/runtime/vm/intermediate_language.h | 
| @@ -1558,12 +1558,14 @@ class CatchBlockEntryInstr : public BlockEntryInstr { | 
| public: | 
| CatchBlockEntryInstr(intptr_t block_id, | 
| intptr_t try_index, | 
| +                       GraphEntryInstr* graph_entry, | 
| const Array& handler_types, | 
| intptr_t catch_try_index, | 
| const LocalVariable& exception_var, | 
| const LocalVariable& stacktrace_var, | 
| bool needs_stacktrace) | 
| : BlockEntryInstr(block_id, try_index), | 
| +        graph_entry_(graph_entry), | 
| predecessor_(NULL), | 
| catch_handler_types_(Array::ZoneHandle(handler_types.raw())), | 
| catch_try_index_(catch_try_index), | 
| @@ -1581,6 +1583,8 @@ class CatchBlockEntryInstr : public BlockEntryInstr { | 
| return predecessor_; | 
| } | 
|  | 
| +  GraphEntryInstr* graph_entry() const { return graph_entry_; } | 
| + | 
| const LocalVariable& exception_var() const { return exception_var_; } | 
| const LocalVariable& stacktrace_var() const { return stacktrace_var_; } | 
|  | 
| @@ -1606,6 +1610,7 @@ class CatchBlockEntryInstr : public BlockEntryInstr { | 
| predecessor_ = predecessor; | 
| } | 
|  | 
| +  GraphEntryInstr* graph_entry_; | 
| BlockEntryInstr* predecessor_; | 
| const Array& catch_handler_types_; | 
| const intptr_t catch_try_index_; | 
| @@ -1912,10 +1917,11 @@ class PhiInstr : public Definition { | 
| PhiInstr(JoinEntryInstr* block, intptr_t num_inputs) | 
| : block_(block), | 
| inputs_(num_inputs), | 
| -      is_alive_(false), | 
| representation_(kTagged), | 
| reaching_defs_(NULL), | 
| -      loop_variable_info_(NULL) { | 
| +      loop_variable_info_(NULL), | 
| +      is_alive_(false), | 
| +      is_receiver_(kUnknownReceiver) { | 
| for (intptr_t i = 0; i < num_inputs; ++i) { | 
| inputs_.Add(NULL); | 
| } | 
| @@ -1985,6 +1991,21 @@ class PhiInstr : public Definition { | 
|  | 
| PRINT_TO_SUPPORT | 
|  | 
| +  enum ReceiverType { | 
| +    kUnknownReceiver = -1, | 
| +    kNotReceiver = 0, | 
| +    kReceiver = 1 | 
| +  }; | 
| + | 
| +  ReceiverType is_receiver() const { | 
| +    return static_cast<ReceiverType>(is_receiver_); | 
| +  } | 
| + | 
| +  void set_is_receiver(ReceiverType is_receiver) { | 
| +    ASSERT(is_receiver_ == kUnknownReceiver); | 
| +    is_receiver_ = is_receiver; | 
| +  } | 
| + | 
| private: | 
| // Direct access to inputs_ in order to resize it due to unreachable | 
| // predecessors. | 
| @@ -1994,11 +2015,11 @@ class PhiInstr : public Definition { | 
|  | 
| JoinEntryInstr* block_; | 
| GrowableArray<Value*> inputs_; | 
| -  bool is_alive_; | 
| Representation representation_; | 
| - | 
| BitVector* reaching_defs_; | 
| InductionVariableInfo* loop_variable_info_; | 
| +  bool is_alive_; | 
| +  int8_t is_receiver_; | 
|  | 
| DISALLOW_COPY_AND_ASSIGN(PhiInstr); | 
| }; | 
|  |