Index: src/hydrogen.h |
diff --git a/src/hydrogen.h b/src/hydrogen.h |
index acf1d15d8fb06e824c9521db01e83007b9587623..818569b0919b0441bcb7a8f68b139c346e0d590c 100644 |
--- a/src/hydrogen.h |
+++ b/src/hydrogen.h |
@@ -1042,10 +1042,14 @@ class HGraphBuilder { |
: info_(info), |
graph_(NULL), |
current_block_(NULL), |
+ scope_(info->scope()), |
position_(HSourcePosition::Unknown()), |
start_position_(0) {} |
virtual ~HGraphBuilder() {} |
+ Scope* scope() const { return scope_; } |
+ void set_scope(Scope* scope) { scope_ = scope; } |
+ |
HBasicBlock* current_block() const { return current_block_; } |
void set_current_block(HBasicBlock* block) { current_block_ = block; } |
HEnvironment* environment() const { |
@@ -1870,6 +1874,7 @@ class HGraphBuilder { |
CompilationInfo* info_; |
HGraph* graph_; |
HBasicBlock* current_block_; |
+ Scope* scope_; |
HSourcePosition position_; |
int start_position_; |
}; |
@@ -1997,10 +2002,12 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { |
class BreakAndContinueInfo V8_FINAL BASE_EMBEDDED { |
public: |
explicit BreakAndContinueInfo(BreakableStatement* target, |
+ Scope* scope, |
int drop_extra = 0) |
: target_(target), |
break_block_(NULL), |
continue_block_(NULL), |
+ scope_(scope), |
drop_extra_(drop_extra) { |
} |
@@ -2009,12 +2016,14 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { |
void set_break_block(HBasicBlock* block) { break_block_ = block; } |
HBasicBlock* continue_block() { return continue_block_; } |
void set_continue_block(HBasicBlock* block) { continue_block_ = block; } |
+ Scope* scope() { return scope_; } |
int drop_extra() { return drop_extra_; } |
private: |
BreakableStatement* target_; |
HBasicBlock* break_block_; |
HBasicBlock* continue_block_; |
+ Scope* scope_; |
int drop_extra_; |
}; |
@@ -2036,7 +2045,8 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { |
// Search the break stack for a break or continue target. |
enum BreakType { BREAK, CONTINUE }; |
- HBasicBlock* Get(BreakableStatement* stmt, BreakType type, int* drop_extra); |
+ HBasicBlock* Get(BreakableStatement* stmt, BreakType type, |
+ Scope** scope, int* drop_extra); |
private: |
BreakAndContinueInfo* info_; |
@@ -2146,8 +2156,7 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { |
bool PreProcessOsrEntry(IterationStatement* statement); |
void VisitLoopBody(IterationStatement* stmt, |
- HBasicBlock* loop_entry, |
- BreakAndContinueInfo* break_info); |
+ HBasicBlock* loop_entry); |
// Create a back edge in the flow graph. body_exit is the predecessor |
// block and loop_entry is the successor block. loop_successor is the |