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