| 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,
|
|
|