Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1431)

Unified Diff: runtime/vm/intermediate_language.h

Issue 22590002: Fix bug with optimized try-catch on ARM/MIPS. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: added cleanup of CatchEntry Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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,

Powered by Google App Engine
This is Rietveld 408576698