LCOV - code coverage report
Current view: top level - src/compiler - common-node-cache.h (source / functions) Hit Total Coverage
Test: app.info Lines: 9 11 81.8 %
Date: 2019-04-17 Functions: 0 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             : #ifndef V8_COMPILER_COMMON_NODE_CACHE_H_
       6             : #define V8_COMPILER_COMMON_NODE_CACHE_H_
       7             : 
       8             : #include "src/compiler/node-cache.h"
       9             : 
      10             : namespace v8 {
      11             : namespace internal {
      12             : 
      13             : // Forward declarations.
      14             : class ExternalReference;
      15             : class HeapObject;
      16             : template <typename>
      17             : class Handle;
      18             : 
      19             : 
      20             : namespace compiler {
      21             : 
      22             : // Bundles various caches for common nodes.
      23             : class CommonNodeCache final {
      24             :  public:
      25     4289183 :   explicit CommonNodeCache(Zone* zone) : zone_(zone) {}
      26             :   ~CommonNodeCache() = default;
      27             : 
      28             :   Node** FindInt32Constant(int32_t value) {
      29    14405430 :     return int32_constants_.Find(zone(), value);
      30             :   }
      31             : 
      32             :   Node** FindInt64Constant(int64_t value) {
      33     9830254 :     return int64_constants_.Find(zone(), value);
      34             :   }
      35             : 
      36             :   Node** FindFloat32Constant(float value) {
      37             :     // We canonicalize float constants at the bit representation level.
      38      125497 :     return float32_constants_.Find(zone(), bit_cast<int32_t>(value));
      39             :   }
      40             : 
      41             :   Node** FindFloat64Constant(double value) {
      42             :     // We canonicalize double constants at the bit representation level.
      43      496328 :     return float64_constants_.Find(zone(), bit_cast<int64_t>(value));
      44             :   }
      45             : 
      46             :   Node** FindExternalConstant(ExternalReference value);
      47             : 
      48             :   Node** FindPointerConstant(intptr_t value) {
      49        1348 :     return pointer_constants_.Find(zone(), value);
      50             :   }
      51             : 
      52             :   Node** FindNumberConstant(double value) {
      53             :     // We canonicalize double constants at the bit representation level.
      54     3359605 :     return number_constants_.Find(zone(), bit_cast<int64_t>(value));
      55             :   }
      56             : 
      57             :   Node** FindHeapConstant(Handle<HeapObject> value);
      58             : 
      59             :   Node** FindRelocatableInt32Constant(int32_t value, RelocInfoMode rmode) {
      60           0 :     return relocatable_int32_constants_.Find(zone(),
      61           0 :                                              std::make_pair(value, rmode));
      62             :   }
      63             : 
      64             :   Node** FindRelocatableInt64Constant(int64_t value, RelocInfoMode rmode) {
      65      185524 :     return relocatable_int64_constants_.Find(zone(),
      66      185524 :                                              std::make_pair(value, rmode));
      67             :   }
      68             : 
      69             :   // Return all nodes from the cache.
      70             :   void GetCachedNodes(ZoneVector<Node*>* nodes);
      71             : 
      72             :   Zone* zone() const { return zone_; }
      73             : 
      74             :  private:
      75             :   Int32NodeCache int32_constants_;
      76             :   Int64NodeCache int64_constants_;
      77             :   Int32NodeCache float32_constants_;
      78             :   Int64NodeCache float64_constants_;
      79             :   IntPtrNodeCache external_constants_;
      80             :   IntPtrNodeCache pointer_constants_;
      81             :   Int64NodeCache number_constants_;
      82             :   IntPtrNodeCache heap_constants_;
      83             :   RelocInt32NodeCache relocatable_int32_constants_;
      84             :   RelocInt64NodeCache relocatable_int64_constants_;
      85             :   Zone* const zone_;
      86             : 
      87             :   DISALLOW_COPY_AND_ASSIGN(CommonNodeCache);
      88             : };
      89             : 
      90             : }  // namespace compiler
      91             : }  // namespace internal
      92             : }  // namespace v8
      93             : 
      94             : #endif  // V8_COMPILER_COMMON_NODE_CACHE_H_

Generated by: LCOV version 1.10