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

Side by Side Diff: src/hydrogen.cc

Issue 582653002: Remove switch-clause limit (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/objects.h » ('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/hydrogen.h" 5 #include "src/hydrogen.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "src/v8.h" 9 #include "src/v8.h"
10 10
(...skipping 4816 matching lines...) Expand 10 before | Expand all | Expand 10 after
4827 DCHECK(current_block()->HasPredecessor()); 4827 DCHECK(current_block()->HasPredecessor());
4828 return Bailout(kWithStatement); 4828 return Bailout(kWithStatement);
4829 } 4829 }
4830 4830
4831 4831
4832 void HOptimizedGraphBuilder::VisitSwitchStatement(SwitchStatement* stmt) { 4832 void HOptimizedGraphBuilder::VisitSwitchStatement(SwitchStatement* stmt) {
4833 DCHECK(!HasStackOverflow()); 4833 DCHECK(!HasStackOverflow());
4834 DCHECK(current_block() != NULL); 4834 DCHECK(current_block() != NULL);
4835 DCHECK(current_block()->HasPredecessor()); 4835 DCHECK(current_block()->HasPredecessor());
4836 4836
4837 // We only optimize switch statements with a bounded number of clauses.
4838 const int kCaseClauseLimit = 128;
4839 ZoneList<CaseClause*>* clauses = stmt->cases(); 4837 ZoneList<CaseClause*>* clauses = stmt->cases();
4840 int clause_count = clauses->length(); 4838 int clause_count = clauses->length();
4841 ZoneList<HBasicBlock*> body_blocks(clause_count, zone()); 4839 ZoneList<HBasicBlock*> body_blocks(clause_count, zone());
4842 if (clause_count > kCaseClauseLimit) {
4843 return Bailout(kSwitchStatementTooManyClauses);
4844 }
4845 4840
4846 CHECK_ALIVE(VisitForValue(stmt->tag())); 4841 CHECK_ALIVE(VisitForValue(stmt->tag()));
4847 Add<HSimulate>(stmt->EntryId()); 4842 Add<HSimulate>(stmt->EntryId());
4848 HValue* tag_value = Top(); 4843 HValue* tag_value = Top();
4849 Type* tag_type = stmt->tag()->bounds().lower; 4844 Type* tag_type = stmt->tag()->bounds().lower;
4850 4845
4851 // 1. Build all the tests, with dangling true branches 4846 // 1. Build all the tests, with dangling true branches
4852 BailoutId default_id = BailoutId::None(); 4847 BailoutId default_id = BailoutId::None();
4853 for (int i = 0; i < clause_count; ++i) { 4848 for (int i = 0; i < clause_count; ++i) {
4854 CaseClause* clause = clauses->at(i); 4849 CaseClause* clause = clauses->at(i);
(...skipping 7649 matching lines...) Expand 10 before | Expand all | Expand 10 after
12504 if (ShouldProduceTraceOutput()) { 12499 if (ShouldProduceTraceOutput()) {
12505 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 12500 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
12506 } 12501 }
12507 12502
12508 #ifdef DEBUG 12503 #ifdef DEBUG
12509 graph_->Verify(false); // No full verify. 12504 graph_->Verify(false); // No full verify.
12510 #endif 12505 #endif
12511 } 12506 }
12512 12507
12513 } } // namespace v8::internal 12508 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698