Index: src/hydrogen.h |
diff --git a/src/hydrogen.h b/src/hydrogen.h |
index c2339e3fc74f338e8b754467ebc2fc589ccc7beb..8f01fe2bdf69a16b5e490e05781c1f96daa71805 100644 |
--- a/src/hydrogen.h |
+++ b/src/hydrogen.h |
@@ -120,7 +120,7 @@ class HBasicBlock: public ZoneObject { |
void Finish(HControlInstruction* last); |
void FinishExit(HControlInstruction* instruction); |
- void Goto(HBasicBlock* block, bool include_stack_check = false); |
+ void Goto(HBasicBlock* block); |
int PredecessorIndexOf(HBasicBlock* predecessor) const; |
void AddSimulate(int id) { AddInstruction(CreateSimulate(id)); } |
@@ -185,7 +185,10 @@ class HBasicBlock: public ZoneObject { |
class HLoopInformation: public ZoneObject { |
public: |
explicit HLoopInformation(HBasicBlock* loop_header) |
- : back_edges_(4), loop_header_(loop_header), blocks_(8) { |
+ : back_edges_(4), |
+ loop_header_(loop_header), |
+ blocks_(8), |
+ stack_check_(NULL) { |
blocks_.Add(loop_header); |
} |
virtual ~HLoopInformation() {} |
@@ -196,12 +199,18 @@ class HLoopInformation: public ZoneObject { |
HBasicBlock* GetLastBackEdge() const; |
void RegisterBackEdge(HBasicBlock* block); |
+ HStackCheck* stack_check() const { return stack_check_; } |
+ void set_stack_check(HStackCheck* stack_check) { |
+ stack_check_ = stack_check; |
+ } |
+ |
private: |
void AddBlock(HBasicBlock* block); |
ZoneList<HBasicBlock*> back_edges_; |
HBasicBlock* loop_header_; |
ZoneList<HBasicBlock*> blocks_; |
+ HStackCheck* stack_check_; |
}; |
@@ -771,6 +780,9 @@ class HGraphBuilder: public AstVisitor { |
void PreProcessOsrEntry(IterationStatement* statement); |
// True iff. we are compiling for OSR and the statement is the entry. |
bool HasOsrEntryAt(IterationStatement* statement); |
+ void VisitLoopBody(Statement* body, |
+ HBasicBlock* loop_entry, |
+ BreakAndContinueInfo* break_info); |
HBasicBlock* CreateJoin(HBasicBlock* first, |
HBasicBlock* second, |