| 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;
|
|
|
|
|