| Index: runtime/vm/intermediate_language.h
 | 
| ===================================================================
 | 
| --- runtime/vm/intermediate_language.h	(revision 25871)
 | 
| +++ runtime/vm/intermediate_language.h	(working copy)
 | 
| @@ -577,7 +577,6 @@
 | 
|    M(ExtractConstructorInstantiator)                                            \
 | 
|    M(AllocateContext)                                                           \
 | 
|    M(CloneContext)                                                              \
 | 
| -  M(CatchEntry)                                                                \
 | 
|    M(BinarySmiOp)                                                               \
 | 
|    M(UnarySmiOp)                                                                \
 | 
|    M(CheckStackOverflow)                                                        \
 | 
| @@ -1489,11 +1488,15 @@
 | 
|    CatchBlockEntryInstr(intptr_t block_id,
 | 
|                         intptr_t try_index,
 | 
|                         const Array& handler_types,
 | 
| -                       intptr_t catch_try_index)
 | 
| +                       intptr_t catch_try_index,
 | 
| +                       const LocalVariable& exception_var,
 | 
| +                       const LocalVariable& stacktrace_var)
 | 
|        : BlockEntryInstr(block_id, try_index),
 | 
|          predecessor_(NULL),
 | 
|          catch_handler_types_(Array::ZoneHandle(handler_types.raw())),
 | 
| -        catch_try_index_(catch_try_index) { }
 | 
| +        catch_try_index_(catch_try_index),
 | 
| +        exception_var_(exception_var),
 | 
| +        stacktrace_var_(stacktrace_var) { }
 | 
|  
 | 
|    DECLARE_INSTRUCTION(CatchBlockEntry)
 | 
|  
 | 
| @@ -1505,6 +1508,9 @@
 | 
|      return predecessor_;
 | 
|    }
 | 
|  
 | 
| +  const LocalVariable& exception_var() const { return exception_var_; }
 | 
| +  const LocalVariable& stacktrace_var() const { return stacktrace_var_; }
 | 
| +
 | 
|    // Returns try index for the try block to which this catch handler
 | 
|    // corresponds.
 | 
|    intptr_t catch_try_index() const {
 | 
| @@ -1529,6 +1535,8 @@
 | 
|    const Array& catch_handler_types_;
 | 
|    const intptr_t catch_try_index_;
 | 
|    GrowableArray<Definition*> initial_definitions_;
 | 
| +  const LocalVariable& exception_var_;
 | 
| +  const LocalVariable& stacktrace_var_;
 | 
|  
 | 
|    DISALLOW_COPY_AND_ASSIGN(CatchBlockEntryInstr);
 | 
|  };
 | 
| @@ -4295,35 +4303,6 @@
 | 
|  };
 | 
|  
 | 
|  
 | 
| -class CatchEntryInstr : public TemplateInstruction<0> {
 | 
| - public:
 | 
| -  CatchEntryInstr(const LocalVariable& exception_var,
 | 
| -                  const LocalVariable& stacktrace_var)
 | 
| -      : exception_var_(exception_var), stacktrace_var_(stacktrace_var) {}
 | 
| -
 | 
| -  const LocalVariable& exception_var() const { return exception_var_; }
 | 
| -  const LocalVariable& stacktrace_var() const { return stacktrace_var_; }
 | 
| -
 | 
| -  DECLARE_INSTRUCTION(CatchEntry)
 | 
| -
 | 
| -  virtual intptr_t ArgumentCount() const { return 0; }
 | 
| -
 | 
| -  virtual void PrintOperandsTo(BufferFormatter* f) const;
 | 
| -
 | 
| -  virtual bool CanDeoptimize() const { return false; }
 | 
| -
 | 
| -  virtual EffectSet Effects() const { return EffectSet::All(); }
 | 
| -
 | 
| -  virtual bool MayThrow() const { return false; }
 | 
| -
 | 
| - private:
 | 
| -  const LocalVariable& exception_var_;
 | 
| -  const LocalVariable& stacktrace_var_;
 | 
| -
 | 
| -  DISALLOW_COPY_AND_ASSIGN(CatchEntryInstr);
 | 
| -};
 | 
| -
 | 
| -
 | 
|  class CheckEitherNonSmiInstr : public TemplateInstruction<2> {
 | 
|   public:
 | 
|    CheckEitherNonSmiInstr(Value* left,
 | 
| 
 |