LCOV - code coverage report
Current view: top level - src/compiler - graph-trimmer.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 16 19 84.2 %
Date: 2017-04-26 Functions: 3 3 100.0 %

          Line data    Source code
       1             : // Copyright 2015 the V8 project authors. All rights reserved.
       2             : // Use of this source code is governed by a BSD-style license that can be
       3             : // found in the LICENSE file.
       4             : 
       5             : #include "src/compiler/graph-trimmer.h"
       6             : 
       7             : #include "src/compiler/graph.h"
       8             : 
       9             : namespace v8 {
      10             : namespace internal {
      11             : namespace compiler {
      12             : 
      13     4885498 : GraphTrimmer::GraphTrimmer(Zone* zone, Graph* graph)
      14     2442751 :     : graph_(graph), is_live_(graph, 2), live_(zone) {
      15     2442747 :   live_.reserve(graph->NodeCount());
      16     2442801 : }
      17             : 
      18             : 
      19     2442787 : GraphTrimmer::~GraphTrimmer() {}
      20             : 
      21             : 
      22     2442752 : void GraphTrimmer::TrimGraph() {
      23             :   // Mark end node as live.
      24     2442752 :   MarkAsLive(graph()->end());
      25             :   // Compute transitive closure of live nodes.
      26   460631551 :   for (size_t i = 0; i < live_.size(); ++i) {
      27   460631908 :     Node* const live = live_[i];
      28   764695702 :     for (Node* const input : live->inputs()) MarkAsLive(input);
      29             :   }
      30             :   // Remove dead->live edges.
      31   460636990 :   for (Node* const live : live_) {
      32             :     DCHECK(IsLive(live));
      33  1376443461 :     for (Edge edge : live->use_edges()) {
      34             :       Node* const user = edge.from();
      35   573672732 :       if (!IsLive(user)) {
      36    38078950 :         if (FLAG_trace_turbo_trimming) {
      37           0 :           OFStream os(stdout);
      38           0 :           os << "DeadLink: " << *user << "(" << edge.index() << ") -> " << *live
      39           0 :              << std::endl;
      40             :         }
      41    38078950 :         edge.UpdateTo(nullptr);
      42             :       }
      43             :     }
      44             :   }
      45     2442792 : }
      46             : 
      47             : }  // namespace compiler
      48             : }  // namespace internal
      49             : }  // namespace v8

Generated by: LCOV version 1.10