Index: runtime/vm/intermediate_language.h |
=================================================================== |
--- runtime/vm/intermediate_language.h (revision 45190) |
+++ runtime/vm/intermediate_language.h (working copy) |
@@ -440,6 +440,7 @@ |
M(Return) \ |
M(Throw) \ |
M(ReThrow) \ |
+ M(Stop) \ |
M(Goto) \ |
M(IndirectGoto) \ |
M(Branch) \ |
@@ -2125,6 +2126,32 @@ |
}; |
+class StopInstr : public TemplateInstruction<0, NoThrow> { |
+ public: |
+ explicit StopInstr(const char* message) |
+ : message_(message) { |
+ ASSERT(message != NULL); |
+ } |
+ |
+ const char* message() const { return message_; } |
+ |
+ DECLARE_INSTRUCTION(Stop); |
+ |
+ virtual intptr_t ArgumentCount() const { return 0; } |
+ |
+ virtual bool CanDeoptimize() const { return false; } |
+ |
+ virtual EffectSet Effects() const { return EffectSet::None(); } |
+ |
+ virtual EffectSet Dependencies() const { return EffectSet::None(); } |
+ |
+ private: |
+ const char* message_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(StopInstr); |
+}; |
+ |
+ |
class GotoInstr : public TemplateInstruction<0, NoThrow> { |
public: |
explicit GotoInstr(JoinEntryInstr* entry) |