Revision: 3447
Author: [email protected]
Date: Thu Dec 10 05:12:13 2009
Log: Disible the toplevel compiler for code containing for loops.
Review URL: http://codereview.chromium.org/492003
http://code.google.com/p/v8/source/detail?r=3447
Modified:
/branches/bleeding_edge/src/compiler.cc
/branches/bleeding_edge/src/fast-codegen.cc
=======================================
--- /branches/bleeding_edge/src/compiler.cc Tue Dec 8 01:43:51 2009
+++ /branches/bleeding_edge/src/compiler.cc Thu Dec 10 05:12:13 2009
@@ -738,21 +738,7 @@
void CodeGenSelector::VisitForStatement(ForStatement* stmt) {
- // 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());
- }
+ BAILOUT("ForStatement");
}
=======================================
--- /branches/bleeding_edge/src/fast-codegen.cc Mon Dec 7 07:10:39 2009
+++ /branches/bleeding_edge/src/fast-codegen.cc Thu Dec 10 05:12:13 2009
@@ -375,48 +375,7 @@
void FastCodeGenerator::VisitForStatement(ForStatement* stmt) {
- Comment cmnt(masm_, "[ ForStatement");
- Label test, body, exit, stack_limit_hit, stack_check_success;
- if (stmt->init() != NULL) Visit(stmt->init());
-
- increment_loop_depth();
- // Emit the test at the bottom of the loop (even if empty).
- __ jmp(&test);
- __ bind(&body);
- Visit(stmt->body());
-
- // Check stack before looping.
- __ StackLimitCheck(&stack_limit_hit);
- __ bind(&stack_check_success);
-
- if (stmt->next() != NULL) Visit(stmt->next());
-
- __ bind(&test);
-
- if (stmt->cond() == NULL) {
- // For an empty test jump to the top of the loop.
- __ jmp(&body);
- } else {
- // We are not in an expression context because we have been compiling
- // statements. Set up a test expression context for the condition.
- ASSERT_EQ(NULL, true_label_);
- ASSERT_EQ(NULL, false_label_);
-
- true_label_ = &body;
- false_label_ = &exit;
- ASSERT(stmt->cond()->context() == Expression::kTest);
- Visit(stmt->cond());
- true_label_ = NULL;
- false_label_ = NULL;
- }
-
- __ bind(&stack_limit_hit);
- StackCheckStub stack_stub;
- __ CallStub(&stack_stub);
- __ jmp(&stack_check_success);
-
- __ bind(&exit);
- decrement_loop_depth();
+ UNREACHABLE();
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev