Index: src/compiler.cc |
=================================================================== |
--- src/compiler.cc (revision 3198) |
+++ src/compiler.cc (working copy) |
@@ -119,7 +119,7 @@ |
} |
// Generate code and return it. |
- if (FLAG_fast_compiler) { |
+ if (FLAG_fast_compiler && !Bootstrapper::IsActive()) { |
Kevin Millikin (Chromium)
2009/11/02 14:01:22
I will not commit this part of the change :)
|
CodeGenSelector selector; |
CodeGenSelector::CodeGenTag code_gen = selector.Select(literal); |
if (code_gen == CodeGenSelector::FAST) { |
@@ -587,7 +587,21 @@ |
void CodeGenSelector::VisitForStatement(ForStatement* stmt) { |
- BAILOUT("ForStatement"); |
+ // We do not handle loops with breaks or continue statements in their |
+ // body. We will bailout when we hit those statements in the body. |
+ if (stmt->init() != NULL) { |
+ Visit(stmt->init()); |
+ CHECK_BAILOUT; |
+ } |
+ if (stmt->cond() != NULL) { |
+ ProcessExpression(stmt->cond(), Expression::kTest); |
+ CHECK_BAILOUT; |
+ } |
+ Visit(stmt->body()); |
+ if (stmt->next() != NULL) { |
+ CHECK_BAILOUT; |
+ Visit(stmt->next()); |
+ } |
} |