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

Unified Diff: src/hydrogen-dce.cc

Issue 1405363003: Move Hydrogen and Lithium to src/crankshaft/ (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebased Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/hydrogen-dce.h ('k') | src/hydrogen-dehoist.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/hydrogen-dce.cc
diff --git a/src/hydrogen-dce.cc b/src/hydrogen-dce.cc
deleted file mode 100644
index 50a300bd940208e40af2a02dc3e1a2a7b4864ace..0000000000000000000000000000000000000000
--- a/src/hydrogen-dce.cc
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "src/hydrogen-dce.h"
-
-namespace v8 {
-namespace internal {
-
-void HDeadCodeEliminationPhase::MarkLive(
- HValue* instr, ZoneList<HValue*>* worklist) {
- if (instr->CheckFlag(HValue::kIsLive)) return; // Already live.
-
- if (FLAG_trace_dead_code_elimination) PrintLive(NULL, instr);
-
- // Transitively mark all inputs of live instructions live.
- worklist->Add(instr, zone());
- while (!worklist->is_empty()) {
- HValue* instr = worklist->RemoveLast();
- instr->SetFlag(HValue::kIsLive);
- for (int i = 0; i < instr->OperandCount(); ++i) {
- HValue* input = instr->OperandAt(i);
- if (!input->CheckFlag(HValue::kIsLive)) {
- input->SetFlag(HValue::kIsLive);
- worklist->Add(input, zone());
- if (FLAG_trace_dead_code_elimination) PrintLive(instr, input);
- }
- }
- }
-}
-
-
-void HDeadCodeEliminationPhase::PrintLive(HValue* ref, HValue* instr) {
- AllowHandleDereference allow_deref;
- OFStream os(stdout);
- os << "[MarkLive ";
- if (ref != NULL) {
- os << *ref;
- } else {
- os << "root";
- }
- os << " -> " << *instr << "]" << std::endl;
-}
-
-
-void HDeadCodeEliminationPhase::MarkLiveInstructions() {
- ZoneList<HValue*> worklist(10, zone());
-
- // Transitively mark all live instructions, starting from roots.
- for (int i = 0; i < graph()->blocks()->length(); ++i) {
- HBasicBlock* block = graph()->blocks()->at(i);
- for (HInstructionIterator it(block); !it.Done(); it.Advance()) {
- HInstruction* instr = it.Current();
- if (instr->CannotBeEliminated()) MarkLive(instr, &worklist);
- }
- for (int j = 0; j < block->phis()->length(); j++) {
- HPhi* phi = block->phis()->at(j);
- if (phi->CannotBeEliminated()) MarkLive(phi, &worklist);
- }
- }
-
- DCHECK(worklist.is_empty()); // Should have processed everything.
-}
-
-
-void HDeadCodeEliminationPhase::RemoveDeadInstructions() {
- ZoneList<HPhi*> worklist(graph()->blocks()->length(), zone());
-
- // Remove any instruction not marked kIsLive.
- for (int i = 0; i < graph()->blocks()->length(); ++i) {
- HBasicBlock* block = graph()->blocks()->at(i);
- for (HInstructionIterator it(block); !it.Done(); it.Advance()) {
- HInstruction* instr = it.Current();
- if (!instr->CheckFlag(HValue::kIsLive)) {
- // Instruction has not been marked live, so remove it.
- instr->DeleteAndReplaceWith(NULL);
- } else {
- // Clear the liveness flag to leave the graph clean for the next DCE.
- instr->ClearFlag(HValue::kIsLive);
- }
- }
- // Collect phis that are dead and remove them in the next pass.
- for (int j = 0; j < block->phis()->length(); j++) {
- HPhi* phi = block->phis()->at(j);
- if (!phi->CheckFlag(HValue::kIsLive)) {
- worklist.Add(phi, zone());
- } else {
- phi->ClearFlag(HValue::kIsLive);
- }
- }
- }
-
- // Process phis separately to avoid simultaneously mutating the phi list.
- while (!worklist.is_empty()) {
- HPhi* phi = worklist.RemoveLast();
- HBasicBlock* block = phi->block();
- phi->DeleteAndReplaceWith(NULL);
- if (phi->HasMergedIndex()) {
- block->RecordDeletedPhi(phi->merged_index());
- }
- }
-}
-
-} // namespace internal
-} // namespace v8
« no previous file with comments | « src/hydrogen-dce.h ('k') | src/hydrogen-dehoist.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698