Index: src/full-codegen.h |
=================================================================== |
--- src/full-codegen.h (revision 5336) |
+++ src/full-codegen.h (working copy) |
@@ -73,7 +73,8 @@ |
loop_depth_(0), |
location_(kStack), |
true_label_(NULL), |
- false_label_(NULL) { |
+ false_label_(NULL), |
+ fall_through_(NULL) { |
} |
static Handle<Code> MakeCode(CompilationInfo* info); |
@@ -258,7 +259,8 @@ |
void PrepareTest(Label* materialize_true, |
Label* materialize_false, |
Label** if_true, |
- Label** if_false); |
+ Label** if_false, |
+ Label** fall_through); |
// Emit code to convert pure control flow to a pair of labels into the |
// result expected according to an expression context. |
@@ -307,17 +309,23 @@ |
location_ = saved_location; |
} |
- void VisitForControl(Expression* expr, Label* if_true, Label* if_false) { |
+ void VisitForControl(Expression* expr, |
+ Label* if_true, |
+ Label* if_false, |
+ Label* fall_through) { |
Expression::Context saved_context = context_; |
Label* saved_true = true_label_; |
Label* saved_false = false_label_; |
+ Label* saved_fall_through = fall_through_; |
context_ = Expression::kTest; |
true_label_ = if_true; |
false_label_ = if_false; |
+ fall_through_ = fall_through; |
Visit(expr); |
context_ = saved_context; |
true_label_ = saved_true; |
false_label_ = saved_false; |
+ fall_through_ = saved_fall_through; |
} |
void VisitDeclarations(ZoneList<Declaration*>* declarations); |
@@ -459,6 +467,7 @@ |
Location location_; |
Label* true_label_; |
Label* false_label_; |
+ Label* fall_through_; |
friend class NestedStatement; |