LCOV - code coverage report
Current view: top level - src - lookup-cache.h (source / functions) Hit Total Coverage
Test: app.info Lines: 4 4 100.0 %
Date: 2017-04-26 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_LOOKUP_CACHE_H_
       6             : #define V8_LOOKUP_CACHE_H_
       7             : 
       8             : #include "src/objects.h"
       9             : 
      10             : namespace v8 {
      11             : namespace internal {
      12             : 
      13             : // Cache for mapping (map, property name) into descriptor index.
      14             : // The cache contains both positive and negative results.
      15             : // Descriptor index equals kNotFound means the property is absent.
      16             : // Cleared at startup and prior to any gc.
      17             : class DescriptorLookupCache {
      18             :  public:
      19             :   // Lookup descriptor index for (map, name).
      20             :   // If absent, kAbsent is returned.
      21             :   inline int Lookup(Map* source, Name* name);
      22             : 
      23             :   // Update an element in the cache.
      24             :   inline void Update(Map* source, Name* name, int result);
      25             : 
      26             :   // Clear the cache.
      27             :   void Clear();
      28             : 
      29             :   static const int kAbsent = -2;
      30             : 
      31             :  private:
      32             :   DescriptorLookupCache() {
      33     3889984 :     for (int i = 0; i < kLength; ++i) {
      34     3889984 :       keys_[i].source = NULL;
      35     3889984 :       keys_[i].name = NULL;
      36     3889984 :       results_[i] = kAbsent;
      37             :     }
      38             :   }
      39             : 
      40             :   static inline int Hash(Object* source, Name* name);
      41             : 
      42             :   static const int kLength = 64;
      43             :   struct Key {
      44             :     Map* source;
      45             :     Name* name;
      46             :   };
      47             : 
      48             :   Key keys_[kLength];
      49             :   int results_[kLength];
      50             : 
      51             :   friend class Isolate;
      52             :   DISALLOW_COPY_AND_ASSIGN(DescriptorLookupCache);
      53             : };
      54             : 
      55             : }  // namespace internal
      56             : }  // namespace v8
      57             : 
      58             : #endif  // V8_LOOKUP_CACHE_H_

Generated by: LCOV version 1.10