LCOV - code coverage report
Current view: top level - test/cctest/compiler - test-graph-visualizer.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 64 64 100.0 %
Date: 2017-10-20 Functions: 7 7 100.0 %

          Line data    Source code
       1             : // Copyright 2014 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/common-operator.h"
       6             : #include "src/compiler/compiler-source-position-table.h"
       7             : #include "src/compiler/graph-visualizer.h"
       8             : #include "src/compiler/graph.h"
       9             : #include "src/compiler/js-operator.h"
      10             : #include "src/compiler/machine-operator.h"
      11             : #include "src/compiler/node.h"
      12             : #include "src/compiler/operator.h"
      13             : #include "src/compiler/schedule.h"
      14             : #include "src/compiler/scheduler.h"
      15             : #include "src/compiler/verifier.h"
      16             : #include "test/cctest/cctest.h"
      17             : 
      18             : namespace v8 {
      19             : namespace internal {
      20             : namespace compiler {
      21             : 
      22       47436 : static Operator dummy_operator1(IrOpcode::kParameter, Operator::kNoWrite,
      23       23718 :                                 "dummy", 1, 0, 0, 1, 0, 0);
      24       47436 : static Operator dummy_operator6(IrOpcode::kParameter, Operator::kNoWrite,
      25       23718 :                                 "dummy", 6, 0, 0, 1, 0, 0);
      26             : 
      27             : 
      28       23724 : TEST(NodeWithNullInputReachableFromEnd) {
      29           6 :   HandleAndZoneScope scope;
      30           6 :   Graph graph(scope.main_zone());
      31           6 :   CommonOperatorBuilder common(scope.main_zone());
      32             : 
      33           6 :   Node* start = graph.NewNode(common.Start(0));
      34             :   graph.SetStart(start);
      35           6 :   Node* k = graph.NewNode(common.Int32Constant(0));
      36             :   Node* phi =
      37           6 :       graph.NewNode(common.Phi(MachineRepresentation::kTagged, 1), k, start);
      38           6 :   phi->ReplaceInput(0, nullptr);
      39             :   graph.SetEnd(phi);
      40             : 
      41          12 :   OFStream os(stdout);
      42           6 :   SourcePositionTable table(&graph);
      43          12 :   os << AsJSON(graph, &table);
      44           6 : }
      45             : 
      46             : 
      47       23724 : TEST(NodeWithNullControlReachableFromEnd) {
      48           6 :   HandleAndZoneScope scope;
      49           6 :   Graph graph(scope.main_zone());
      50           6 :   CommonOperatorBuilder common(scope.main_zone());
      51             : 
      52           6 :   Node* start = graph.NewNode(common.Start(0));
      53             :   graph.SetStart(start);
      54           6 :   Node* k = graph.NewNode(common.Int32Constant(0));
      55             :   Node* phi =
      56           6 :       graph.NewNode(common.Phi(MachineRepresentation::kTagged, 1), k, start);
      57           6 :   phi->ReplaceInput(1, nullptr);
      58             :   graph.SetEnd(phi);
      59             : 
      60          12 :   OFStream os(stdout);
      61           6 :   SourcePositionTable table(&graph);
      62          12 :   os << AsJSON(graph, &table);
      63           6 : }
      64             : 
      65             : 
      66       23724 : TEST(NodeWithNullInputReachableFromStart) {
      67           6 :   HandleAndZoneScope scope;
      68           6 :   Graph graph(scope.main_zone());
      69           6 :   CommonOperatorBuilder common(scope.main_zone());
      70             : 
      71           6 :   Node* start = graph.NewNode(common.Start(0));
      72             :   graph.SetStart(start);
      73           6 :   Node* k = graph.NewNode(common.Int32Constant(0));
      74             :   Node* phi =
      75           6 :       graph.NewNode(common.Phi(MachineRepresentation::kTagged, 1), k, start);
      76           6 :   phi->ReplaceInput(0, nullptr);
      77             :   graph.SetEnd(start);
      78             : 
      79          12 :   OFStream os(stdout);
      80           6 :   SourcePositionTable table(&graph);
      81          12 :   os << AsJSON(graph, &table);
      82           6 : }
      83             : 
      84             : 
      85       23724 : TEST(NodeWithNullControlReachableFromStart) {
      86           6 :   HandleAndZoneScope scope;
      87           6 :   Graph graph(scope.main_zone());
      88           6 :   CommonOperatorBuilder common(scope.main_zone());
      89             : 
      90           6 :   Node* start = graph.NewNode(common.Start(0));
      91             :   graph.SetStart(start);
      92           6 :   Node* merge = graph.NewNode(common.Merge(2), start, start);
      93           6 :   merge->ReplaceInput(1, nullptr);
      94             :   graph.SetEnd(merge);
      95             : 
      96          12 :   OFStream os(stdout);
      97           6 :   SourcePositionTable table(&graph);
      98          12 :   os << AsJSON(graph, &table);
      99           6 : }
     100             : 
     101             : 
     102       23724 : TEST(NodeNetworkOfDummiesReachableFromEnd) {
     103           6 :   HandleAndZoneScope scope;
     104           6 :   Graph graph(scope.main_zone());
     105           6 :   CommonOperatorBuilder common(scope.main_zone());
     106             : 
     107           6 :   Node* start = graph.NewNode(common.Start(0));
     108             :   graph.SetStart(start);
     109             :   Node* n2 = graph.NewNode(&dummy_operator1, graph.start());
     110           6 :   Node* n3 = graph.NewNode(&dummy_operator1, graph.start());
     111             :   Node* n4 = graph.NewNode(&dummy_operator1, n2);
     112             :   Node* n5 = graph.NewNode(&dummy_operator1, n2);
     113             :   Node* n6 = graph.NewNode(&dummy_operator1, n3);
     114             :   Node* n7 = graph.NewNode(&dummy_operator1, n3);
     115             :   Node* n8 = graph.NewNode(&dummy_operator1, n5);
     116             :   Node* n9 = graph.NewNode(&dummy_operator1, n5);
     117             :   Node* n10 = graph.NewNode(&dummy_operator1, n9);
     118             :   Node* n11 = graph.NewNode(&dummy_operator1, n9);
     119           6 :   Node* end_dependencies[6] = {n4, n8, n10, n11, n6, n7};
     120           6 :   Node* end = graph.NewNode(&dummy_operator6, 6, end_dependencies);
     121             :   graph.SetEnd(end);
     122             : 
     123          12 :   OFStream os(stdout);
     124           6 :   SourcePositionTable table(&graph);
     125          12 :   os << AsJSON(graph, &table);
     126           6 : }
     127             : 
     128             : }  // namespace compiler
     129             : }  // namespace internal
     130       71154 : }  // namespace v8

Generated by: LCOV version 1.10