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

Side by Side Diff: src/hydrogen-check-elimination.cc

Issue 888613002: Initial switch to Chromium-style CHECK_* and DCHECK_* macros. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix slow dchecks. Created 5 years, 10 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
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-check-elimination.h" 5 #include "src/hydrogen-check-elimination.h"
6 6
7 #include "src/hydrogen-alias-analysis.h" 7 #include "src/hydrogen-alias-analysis.h"
8 #include "src/hydrogen-flow-engine.h" 8 #include "src/hydrogen-flow-engine.h"
9 9
10 #define GLOBAL 1 10 #define GLOBAL 1
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 HGraph* graph = instr->block()->graph(); 366 HGraph* graph = instr->block()->graph();
367 if (entry->maps_->IsSubset(instr->maps())) { 367 if (entry->maps_->IsSubset(instr->maps())) {
368 // The first check is more strict; the second is redundant. 368 // The first check is more strict; the second is redundant.
369 if (entry->check_ != NULL) { 369 if (entry->check_ != NULL) {
370 DCHECK_NE(HCheckTableEntry::UNCHECKED_STABLE, entry->state_); 370 DCHECK_NE(HCheckTableEntry::UNCHECKED_STABLE, entry->state_);
371 TRACE(("Replacing redundant CheckMaps #%d at B%d with #%d\n", 371 TRACE(("Replacing redundant CheckMaps #%d at B%d with #%d\n",
372 instr->id(), instr->block()->block_id(), entry->check_->id())); 372 instr->id(), instr->block()->block_id(), entry->check_->id()));
373 instr->DeleteAndReplaceWith(entry->check_); 373 instr->DeleteAndReplaceWith(entry->check_);
374 INC_STAT(redundant_); 374 INC_STAT(redundant_);
375 } else if (entry->state_ == HCheckTableEntry::UNCHECKED_STABLE) { 375 } else if (entry->state_ == HCheckTableEntry::UNCHECKED_STABLE) {
376 DCHECK_EQ(NULL, entry->check_); 376 DCHECK(!entry->check_);
377 TRACE(("Marking redundant CheckMaps #%d at B%d as stability check\n", 377 TRACE(("Marking redundant CheckMaps #%d at B%d as stability check\n",
378 instr->id(), instr->block()->block_id())); 378 instr->id(), instr->block()->block_id()));
379 instr->set_maps(entry->maps_->Copy(graph->zone())); 379 instr->set_maps(entry->maps_->Copy(graph->zone()));
380 instr->MarkAsStabilityCheck(); 380 instr->MarkAsStabilityCheck();
381 entry->state_ = HCheckTableEntry::CHECKED_STABLE; 381 entry->state_ = HCheckTableEntry::CHECKED_STABLE;
382 } else if (!instr->IsStabilityCheck()) { 382 } else if (!instr->IsStabilityCheck()) {
383 TRACE(("Marking redundant CheckMaps #%d at B%d as dead\n", 383 TRACE(("Marking redundant CheckMaps #%d at B%d as dead\n",
384 instr->id(), instr->block()->block_id())); 384 instr->id(), instr->block()->block_id()));
385 // Mark check as dead but leave it in the graph as a checkpoint for 385 // Mark check as dead but leave it in the graph as a checkpoint for
386 // subsequent checks. 386 // subsequent checks.
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 void Kill() { 659 void Kill() {
660 size_ = 0; 660 size_ = 0;
661 cursor_ = 0; 661 cursor_ = 0;
662 } 662 }
663 663
664 // Kill all unstable entries in the table. 664 // Kill all unstable entries in the table.
665 void KillUnstableEntries() { 665 void KillUnstableEntries() {
666 bool compact = false; 666 bool compact = false;
667 for (int i = 0; i < size_; ++i) { 667 for (int i = 0; i < size_; ++i) {
668 HCheckTableEntry* entry = &entries_[i]; 668 HCheckTableEntry* entry = &entries_[i];
669 DCHECK_NOT_NULL(entry->object_); 669 DCHECK(entry->object_);
670 if (entry->state_ == HCheckTableEntry::CHECKED) { 670 if (entry->state_ == HCheckTableEntry::CHECKED) {
671 entry->object_ = NULL; 671 entry->object_ = NULL;
672 compact = true; 672 compact = true;
673 } else { 673 } else {
674 // All checked stable entries become unchecked stable. 674 // All checked stable entries become unchecked stable.
675 entry->state_ = HCheckTableEntry::UNCHECKED_STABLE; 675 entry->state_ = HCheckTableEntry::UNCHECKED_STABLE;
676 entry->check_ = NULL; 676 entry->check_ = NULL;
677 } 677 }
678 } 678 }
679 if (compact) Compact(); 679 if (compact) Compact();
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 PRINT_STAT(removed_cit); 894 PRINT_STAT(removed_cit);
895 PRINT_STAT(narrowed); 895 PRINT_STAT(narrowed);
896 PRINT_STAT(loads); 896 PRINT_STAT(loads);
897 PRINT_STAT(empty); 897 PRINT_STAT(empty);
898 PRINT_STAT(compares_true); 898 PRINT_STAT(compares_true);
899 PRINT_STAT(compares_false); 899 PRINT_STAT(compares_false);
900 PRINT_STAT(transitions); 900 PRINT_STAT(transitions);
901 } 901 }
902 902
903 } } // namespace v8::internal 903 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698