LCOV - code coverage report
Current view: top level - src - external-reference-table.h (source / functions) Hit Total Coverage
Test: app.info Lines: 3 4 75.0 %
Date: 2017-10-20 Functions: 0 0 -

          Line data    Source code
       1             : // Copyright 2016 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_EXTERNAL_REFERENCE_TABLE_H_
       6             : #define V8_EXTERNAL_REFERENCE_TABLE_H_
       7             : 
       8             : #include <vector>
       9             : 
      10             : #include "src/address-map.h"
      11             : #include "src/builtins/builtins.h"
      12             : 
      13             : namespace v8 {
      14             : namespace internal {
      15             : 
      16             : class Isolate;
      17             : 
      18             : // ExternalReferenceTable is a helper class that defines the relationship
      19             : // between external references and their encodings. It is used to build
      20             : // hashmaps in ExternalReferenceEncoder and ExternalReferenceDecoder.
      21             : class ExternalReferenceTable {
      22             :  public:
      23             :   static ExternalReferenceTable* instance(Isolate* isolate);
      24             : 
      25     1597492 :   uint32_t size() const { return static_cast<uint32_t>(refs_.size()); }
      26   370049454 :   Address address(uint32_t i) { return refs_[i].address; }
      27           0 :   const char* name(uint32_t i) { return refs_[i].name; }
      28             : 
      29             :   static const char* ResolveSymbol(void* address);
      30             : 
      31             :  private:
      32             :   struct ExternalReferenceEntry {
      33             :     Address address;
      34             :     const char* name;
      35             : 
      36             :     ExternalReferenceEntry(Address address, const char* name)
      37    53650777 :         : address(address), name(name) {}
      38             :   };
      39             : 
      40             :   explicit ExternalReferenceTable(Isolate* isolate);
      41             : 
      42             :   void Add(Address address, const char* name);
      43             : 
      44             :   void AddReferences(Isolate* isolate);
      45             :   void AddBuiltins(Isolate* isolate);
      46             :   void AddRuntimeFunctions(Isolate* isolate);
      47             :   void AddIsolateAddresses(Isolate* isolate);
      48             :   void AddAccessors(Isolate* isolate);
      49             :   void AddStubCache(Isolate* isolate);
      50             : 
      51             :   std::vector<ExternalReferenceEntry> refs_;
      52             :   DISALLOW_COPY_AND_ASSIGN(ExternalReferenceTable);
      53             : };
      54             : 
      55             : }  // namespace internal
      56             : }  // namespace v8
      57             : #endif  // V8_EXTERNAL_REFERENCE_TABLE_H_

Generated by: LCOV version 1.10