LCOV - code coverage report
Current view: top level - src/objects - js-collection-inl.h (source / functions) Hit Total Coverage
Test: app.info Lines: 4 4 100.0 %
Date: 2019-04-17 Functions: 4 4 100.0 %

          Line data    Source code
       1             : // Copyright 2017 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_OBJECTS_JS_COLLECTION_INL_H_
       6             : #define V8_OBJECTS_JS_COLLECTION_INL_H_
       7             : 
       8             : #include "src/objects/js-collection.h"
       9             : 
      10             : #include "src/heap/heap-write-barrier-inl.h"
      11             : #include "src/objects-inl.h"
      12             : #include "src/objects/heap-object-inl.h"
      13             : #include "src/objects/ordered-hash-table-inl.h"
      14             : #include "src/roots-inl.h"
      15             : 
      16             : // Has to be the last include (doesn't have include guards):
      17             : #include "src/objects/object-macros.h"
      18             : 
      19             : namespace v8 {
      20             : namespace internal {
      21             : 
      22             : OBJECT_CONSTRUCTORS_IMPL(JSCollection, JSObject)
      23             : OBJECT_CONSTRUCTORS_IMPL(JSMap, JSCollection)
      24             : OBJECT_CONSTRUCTORS_IMPL(JSSet, JSCollection)
      25             : OBJECT_CONSTRUCTORS_IMPL(JSWeakCollection, JSObject)
      26             : OBJECT_CONSTRUCTORS_IMPL(JSWeakMap, JSWeakCollection)
      27             : OBJECT_CONSTRUCTORS_IMPL(JSWeakSet, JSWeakCollection)
      28             : 
      29             : // TODO(jkummerow): Move JSCollectionIterator to js-collection.h?
      30             : // TODO(jkummerow): Introduce IsJSCollectionIterator() check? Or unchecked
      31             : // version of OBJECT_CONSTRUCTORS_IMPL macro?
      32             : JSCollectionIterator::JSCollectionIterator(Address ptr) : JSObject(ptr) {}
      33             : template <class Derived, class TableType>
      34             : OrderedHashTableIterator<Derived, TableType>::OrderedHashTableIterator(
      35             :     Address ptr)
      36             :     : JSCollectionIterator(ptr) {}
      37             : 
      38             : JSMapIterator::JSMapIterator(Address ptr)
      39             :     : OrderedHashTableIterator<JSMapIterator, OrderedHashMap>(ptr) {
      40             :   SLOW_DCHECK(IsJSMapIterator());
      41             : }
      42             : 
      43             : JSSetIterator::JSSetIterator(Address ptr)
      44             :     : OrderedHashTableIterator<JSSetIterator, OrderedHashSet>(ptr) {
      45             :   SLOW_DCHECK(IsJSSetIterator());
      46             : }
      47             : 
      48     2314833 : ACCESSORS(JSCollection, table, Object, kTableOffset)
      49        1590 : ACCESSORS(JSCollectionIterator, table, Object, kTableOffset)
      50        3246 : ACCESSORS(JSCollectionIterator, index, Object, kIndexOffset)
      51             : 
      52      256835 : ACCESSORS(JSWeakCollection, table, Object, kTableOffset)
      53             : 
      54             : CAST_ACCESSOR(JSCollection)
      55             : CAST_ACCESSOR(JSSet)
      56             : CAST_ACCESSOR(JSSetIterator)
      57             : CAST_ACCESSOR(JSMap)
      58             : CAST_ACCESSOR(JSMapIterator)
      59             : CAST_ACCESSOR(JSWeakCollection)
      60             : CAST_ACCESSOR(JSWeakMap)
      61             : CAST_ACCESSOR(JSWeakSet)
      62             : 
      63             : Object JSMapIterator::CurrentValue() {
      64             :   OrderedHashMap table = OrderedHashMap::cast(this->table());
      65             :   int index = Smi::ToInt(this->index());
      66             :   Object value = table->ValueAt(index);
      67             :   DCHECK(!value->IsTheHole());
      68             :   return value;
      69             : }
      70             : 
      71             : }  // namespace internal
      72             : }  // namespace v8
      73             : 
      74             : #include "src/objects/object-macros-undef.h"
      75             : 
      76             : #endif  // V8_OBJECTS_JS_COLLECTION_INL_H_

Generated by: LCOV version 1.10