LCOV - code coverage report
Current view: top level - src/compiler - node-origin-table.cc (source / functions) Hit Total Coverage
Test: app.info Lines: 42 43 97.7 %
Date: 2019-04-17 Functions: 9 11 81.8 %

          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/node-origin-table.h"
       6             : #include "src/compiler/graph.h"
       7             : #include "src/compiler/node-aux-data.h"
       8             : 
       9             : namespace v8 {
      10             : namespace internal {
      11             : namespace compiler {
      12             : 
      13         703 : void NodeOrigin::PrintJson(std::ostream& out) const {
      14         703 :   out << "{ ";
      15         703 :   switch (origin_kind_) {
      16             :     case kGraphNode:
      17         319 :       out << "\"nodeId\" : ";
      18         319 :       break;
      19             :     case kWasmBytecode:
      20         384 :       out << "\"bytecodePosition\" : ";
      21         384 :       break;
      22             :   }
      23             :   out << created_from();
      24         703 :   out << ", \"reducer\" : \"" << reducer_name() << "\"";
      25         703 :   out << ", \"phase\" : \"" << phase_name() << "\"";
      26         703 :   out << "}";
      27         703 : }
      28             : 
      29           0 : class NodeOriginTable::Decorator final : public GraphDecorator {
      30             :  public:
      31           9 :   explicit Decorator(NodeOriginTable* origins) : origins_(origins) {}
      32             : 
      33          78 :   void Decorate(Node* node) final {
      34          78 :     origins_->SetNodeOrigin(node, origins_->current_origin_);
      35          78 :   }
      36             : 
      37             :  private:
      38             :   NodeOriginTable* origins_;
      39             : };
      40             : 
      41     1502128 : NodeOriginTable::NodeOriginTable(Graph* graph)
      42             :     : graph_(graph),
      43             :       decorator_(nullptr),
      44             :       current_origin_(NodeOrigin::Unknown()),
      45             :       current_phase_name_("unknown"),
      46     4506384 :       table_(graph->zone()) {}
      47             : 
      48           9 : void NodeOriginTable::AddDecorator() {
      49             :   DCHECK_NULL(decorator_);
      50          18 :   decorator_ = new (graph_->zone()) Decorator(this);
      51           9 :   graph_->AddDecorator(decorator_);
      52           9 : }
      53             : 
      54           9 : void NodeOriginTable::RemoveDecorator() {
      55             :   DCHECK_NOT_NULL(decorator_);
      56           9 :   graph_->RemoveDecorator(decorator_);
      57           9 :   decorator_ = nullptr;
      58           9 : }
      59             : 
      60         934 : NodeOrigin NodeOriginTable::GetNodeOrigin(Node* node) const {
      61         934 :   return table_.Get(node);
      62             : }
      63             : 
      64          96 : void NodeOriginTable::SetNodeOrigin(Node* node, const NodeOrigin& no) {
      65         174 :   table_.Set(node, no);
      66          96 : }
      67             : 
      68           9 : void NodeOriginTable::PrintJson(std::ostream& os) const {
      69           9 :   os << "{";
      70             :   bool needs_comma = false;
      71         183 :   for (auto i : table_) {
      72         174 :     NodeOrigin no = i.second;
      73         174 :     if (no.IsKnown()) {
      74         132 :       if (needs_comma) {
      75         123 :         os << ",";
      76             :       }
      77             :       os << "\"" << i.first << "\""
      78         132 :          << ": ";
      79         132 :       no.PrintJson(os);
      80             :       needs_comma = true;
      81             :     }
      82             :   }
      83           9 :   os << "}";
      84           9 : }
      85             : 
      86             : }  // namespace compiler
      87             : }  // namespace internal
      88      121996 : }  // namespace v8

Generated by: LCOV version 1.10