Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: src/crankshaft/hydrogen.cc

Issue 1621623002: [crankshaft] For-in index increment cannot overflow. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@FLAG_optimize_for_in
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | test/mjsunit/regress/regress-3650-1.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/crankshaft/hydrogen.h" 5 #include "src/crankshaft/hydrogen.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "src/allocation-site-scopes.h" 9 #include "src/allocation-site-scopes.h"
10 #include "src/ast/ast-numbering.h" 10 #include "src/ast/ast-numbering.h"
(...skipping 5426 matching lines...) Expand 10 before | Expand all | Expand 10 after
5437 CHECK_BAILOUT(VisitLoopBody(stmt, loop_entry)); 5437 CHECK_BAILOUT(VisitLoopBody(stmt, loop_entry));
5438 } 5438 }
5439 5439
5440 HBasicBlock* body_exit = 5440 HBasicBlock* body_exit =
5441 JoinContinue(stmt, current_block(), break_info.continue_block()); 5441 JoinContinue(stmt, current_block(), break_info.continue_block());
5442 5442
5443 if (body_exit != NULL) { 5443 if (body_exit != NULL) {
5444 set_current_block(body_exit); 5444 set_current_block(body_exit);
5445 5445
5446 HValue* current_index = Pop(); 5446 HValue* current_index = Pop();
5447 Push(AddUncasted<HAdd>(current_index, graph()->GetConstant1())); 5447 HValue* increment =
5448 AddUncasted<HAdd>(current_index, graph()->GetConstant1());
5449 increment->ClearFlag(HValue::kCanOverflow);
5450 Push(increment);
5448 body_exit = current_block(); 5451 body_exit = current_block();
5449 } 5452 }
5450 5453
5451 HBasicBlock* loop_exit = CreateLoop(stmt, 5454 HBasicBlock* loop_exit = CreateLoop(stmt,
5452 loop_entry, 5455 loop_entry,
5453 body_exit, 5456 body_exit,
5454 loop_successor, 5457 loop_successor,
5455 break_info.break_block()); 5458 break_info.break_block());
5456 5459
5457 set_current_block(loop_exit); 5460 set_current_block(loop_exit);
(...skipping 8154 matching lines...) Expand 10 before | Expand all | Expand 10 after
13612 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 13615 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
13613 } 13616 }
13614 13617
13615 #ifdef DEBUG 13618 #ifdef DEBUG
13616 graph_->Verify(false); // No full verify. 13619 graph_->Verify(false); // No full verify.
13617 #endif 13620 #endif
13618 } 13621 }
13619 13622
13620 } // namespace internal 13623 } // namespace internal
13621 } // namespace v8 13624 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/regress/regress-3650-1.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698