V8 Project
v8::internal::StaticNewSpaceVisitor< StaticVisitor > Class Template Reference

#include <objects-visiting.h>

+ Inheritance diagram for v8::internal::StaticNewSpaceVisitor< StaticVisitor >:
+ Collaboration diagram for v8::internal::StaticNewSpaceVisitor< StaticVisitor >:

Classes

class  DataObjectVisitor
 

Public Member Functions

 INLINE (static int IterateBody(Map *map, HeapObject *obj))
 
 INLINE (static void VisitPointers(Heap *heap, Object **start, Object **end))
 
- Public Member Functions inherited from v8::internal::StaticVisitorBase
 STATIC_ASSERT (kVisitorIdCount<=256)
 

Static Public Member Functions

static void Initialize ()
 
- Static Public Member Functions inherited from v8::internal::StaticVisitorBase
static VisitorId GetVisitorId (int instance_type, int instance_size)
 
static VisitorId GetVisitorId (Map *map)
 
static VisitorId GetVisitorIdForSize (VisitorId base, VisitorId generic, int object_size)
 

Private Types

typedef FlexibleBodyVisitor< StaticVisitor, StructBodyDescriptor, intStructVisitor
 
typedef FlexibleBodyVisitor< StaticVisitor, JSObject::BodyDescriptor, intJSObjectVisitor
 
typedef int(* Callback) (Map *map, HeapObject *object)
 

Private Member Functions

 INLINE (static int VisitJSFunction(Map *map, HeapObject *object))
 
 INLINE (static int VisitByteArray(Map *map, HeapObject *object))
 
 INLINE (static int VisitFixedDoubleArray(Map *map, HeapObject *object))
 
 INLINE (static int VisitFixedTypedArray(Map *map, HeapObject *object))
 
 INLINE (static int VisitJSObject(Map *map, HeapObject *object))
 
 INLINE (static int VisitSeqOneByteString(Map *map, HeapObject *object))
 
 INLINE (static int VisitSeqTwoByteString(Map *map, HeapObject *object))
 
 INLINE (static int VisitFreeSpace(Map *map, HeapObject *object))
 
 INLINE (static int VisitJSArrayBuffer(Map *map, HeapObject *object))
 
 INLINE (static int VisitJSTypedArray(Map *map, HeapObject *object))
 
 INLINE (static int VisitJSDataView(Map *map, HeapObject *object))
 

Static Private Attributes

static VisitorDispatchTable< Callbacktable_
 

Additional Inherited Members

- Public Types inherited from v8::internal::StaticVisitorBase
enum  VisitorId {
  kVisitorIdCount , kVisitDataObject = kVisitDataObject2 , kVisitJSObject = kVisitJSObject2 , kVisitStruct = kVisitStruct2 ,
  kMinObjectSizeInWords = 2
}
 

Detailed Description

template<typename StaticVisitor>
class v8::internal::StaticNewSpaceVisitor< StaticVisitor >

Definition at line 249 of file objects-visiting.h.

Member Typedef Documentation

◆ Callback

template<typename StaticVisitor >
typedef int(* v8::internal::StaticNewSpaceVisitor< StaticVisitor >::Callback) (Map *map, HeapObject *object)
private

Definition at line 330 of file objects-visiting.h.

◆ JSObjectVisitor

template<typename StaticVisitor >
typedef FlexibleBodyVisitor<StaticVisitor, JSObject::BodyDescriptor, int> v8::internal::StaticNewSpaceVisitor< StaticVisitor >::JSObjectVisitor
private

Definition at line 328 of file objects-visiting.h.

◆ StructVisitor

template<typename StaticVisitor >
typedef FlexibleBodyVisitor<StaticVisitor, StructBodyDescriptor, int> v8::internal::StaticNewSpaceVisitor< StaticVisitor >::StructVisitor
private

Definition at line 325 of file objects-visiting.h.

Member Function Documentation

◆ Initialize()

template<typename StaticVisitor >
void v8::internal::StaticNewSpaceVisitor< StaticVisitor >::Initialize
static

Definition at line 13 of file objects-visiting-inl.h.

13  {
14  table_.Register(
15  kVisitShortcutCandidate,
16  &FixedBodyVisitor<StaticVisitor, ConsString::BodyDescriptor, int>::Visit);
17 
18  table_.Register(
19  kVisitConsString,
20  &FixedBodyVisitor<StaticVisitor, ConsString::BodyDescriptor, int>::Visit);
21 
22  table_.Register(kVisitSlicedString,
23  &FixedBodyVisitor<StaticVisitor, SlicedString::BodyDescriptor,
24  int>::Visit);
25 
26  table_.Register(
27  kVisitSymbol,
28  &FixedBodyVisitor<StaticVisitor, Symbol::BodyDescriptor, int>::Visit);
29 
30  table_.Register(kVisitFixedArray,
31  &FlexibleBodyVisitor<StaticVisitor,
32  FixedArray::BodyDescriptor, int>::Visit);
33 
34  table_.Register(kVisitFixedDoubleArray, &VisitFixedDoubleArray);
35  table_.Register(kVisitFixedTypedArray, &VisitFixedTypedArray);
36  table_.Register(kVisitFixedFloat64Array, &VisitFixedTypedArray);
37 
38  table_.Register(
39  kVisitNativeContext,
40  &FixedBodyVisitor<StaticVisitor, Context::ScavengeBodyDescriptor,
41  int>::Visit);
42 
43  table_.Register(kVisitByteArray, &VisitByteArray);
44 
45  table_.Register(
46  kVisitSharedFunctionInfo,
47  &FixedBodyVisitor<StaticVisitor, SharedFunctionInfo::BodyDescriptor,
48  int>::Visit);
49 
50  table_.Register(kVisitSeqOneByteString, &VisitSeqOneByteString);
51 
52  table_.Register(kVisitSeqTwoByteString, &VisitSeqTwoByteString);
53 
54  table_.Register(kVisitJSFunction, &VisitJSFunction);
55 
56  table_.Register(kVisitJSArrayBuffer, &VisitJSArrayBuffer);
57 
58  table_.Register(kVisitJSTypedArray, &VisitJSTypedArray);
59 
60  table_.Register(kVisitJSDataView, &VisitJSDataView);
61 
62  table_.Register(kVisitFreeSpace, &VisitFreeSpace);
63 
64  table_.Register(kVisitJSWeakCollection, &JSObjectVisitor::Visit);
65 
66  table_.Register(kVisitJSRegExp, &JSObjectVisitor::Visit);
67 
68  table_.template RegisterSpecializations<DataObjectVisitor, kVisitDataObject,
69  kVisitDataObjectGeneric>();
70 
71  table_.template RegisterSpecializations<JSObjectVisitor, kVisitJSObject,
72  kVisitJSObjectGeneric>();
73  table_.template RegisterSpecializations<StructVisitor, kVisitStruct,
74  kVisitStructGeneric>();
75 }
FixedBodyDescriptor< kHeaderSize, kSize, kSize > ScavengeBodyDescriptor
Definition: contexts.h:576
FixedBodyDescriptor< kNameOffset, kFeedbackVectorOffset+kPointerSize, kSize > BodyDescriptor
Definition: objects.h:6983
FixedBodyDescriptor< kParentOffset, kOffsetOffset+kPointerSize, kSize > BodyDescriptor
Definition: objects.h:9113
FlexibleBodyVisitor< StaticVisitor, JSObject::BodyDescriptor, int > JSObjectVisitor
FlexibleBodyVisitor< StaticVisitor, StructBodyDescriptor, int > StructVisitor
static VisitorDispatchTable< Callback > table_

◆ INLINE() [1/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static int   IterateBodyMap *map, HeapObject *obj)
inline

Definition at line 253 of file objects-visiting.h.

253  {
254  return table_.GetVisitor(map)(map, obj);
255  }
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf map

References map, and v8::internal::StaticNewSpaceVisitor< StaticVisitor >::table_.

◆ INLINE() [2/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static int   VisitByteArrayMap *map, HeapObject *object)
inlineprivate

Definition at line 277 of file objects-visiting.h.

277  {
278  return reinterpret_cast<ByteArray*>(object)->ByteArraySize();
279  }

◆ INLINE() [3/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static int   VisitFixedDoubleArrayMap *map, HeapObject *object)
inlineprivate

Definition at line 281 of file objects-visiting.h.

281  {
282  int length = reinterpret_cast<FixedDoubleArray*>(object)->length();
283  return FixedDoubleArray::SizeFor(length);
284  }
static int SizeFor(int length)
Definition: objects.h:2531

References v8::internal::FixedDoubleArray::SizeFor().

+ Here is the call graph for this function:

◆ INLINE() [4/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static int   VisitFixedTypedArrayMap *map, HeapObject *object)
inlineprivate

Definition at line 286 of file objects-visiting.h.

286  {
287  return reinterpret_cast<FixedTypedArrayBase*>(object)->size();
288  }
enable harmony numeric enable harmony object literal extensions Optimize object size

References size.

◆ INLINE() [5/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static int   VisitFreeSpaceMap *map, HeapObject *object)
inlineprivate

Definition at line 304 of file objects-visiting.h.

304  {
305  return FreeSpace::cast(object)->Size();
306  }

◆ INLINE() [6/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static int   VisitJSArrayBufferMap *map, HeapObject *object)
private

◆ INLINE() [7/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static int   VisitJSDataViewMap *map, HeapObject *object)
private

◆ INLINE() [8/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static int   VisitJSFunctionMap *map, HeapObject *object)
inlineprivate

Definition at line 262 of file objects-visiting.h.

262  {
263  Heap* heap = map->GetHeap();
264  VisitPointers(heap,
267 
268  // Don't visit code entry. We are using this visitor only during scavenges.
269 
270  VisitPointers(
271  heap, HeapObject::RawField(object,
274  return JSFunction::kSize;
275  }
static Object ** RawField(HeapObject *obj, int offset)
Definition: objects-inl.h:1311
static const int kSize
Definition: objects.h:7385
static const int kNonWeakFieldsEndOffset
Definition: objects.h:7383
static const int kCodeEntryOffset
Definition: objects.h:7376
static const int kPropertiesOffset
Definition: objects.h:2193
const int kPointerSize
Definition: globals.h:129

References v8::internal::JSFunction::kCodeEntryOffset, v8::internal::JSFunction::kNonWeakFieldsEndOffset, v8::internal::kPointerSize, v8::internal::JSObject::kPropertiesOffset, v8::internal::JSFunction::kSize, map, and v8::internal::HeapObject::RawField().

+ Here is the call graph for this function:

◆ INLINE() [9/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static int   VisitJSObjectMap *map, HeapObject *object)
inlineprivate

Definition at line 290 of file objects-visiting.h.

290  {
291  return JSObjectVisitor::Visit(map, object);
292  }

References map.

◆ INLINE() [10/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static int   VisitJSTypedArrayMap *map, HeapObject *object)
private

◆ INLINE() [11/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static int   VisitSeqOneByteStringMap *map, HeapObject *object)
inlineprivate

Definition at line 294 of file objects-visiting.h.

294  {
295  return SeqOneByteString::cast(object)
296  ->SeqOneByteStringSize(map->instance_type());
297  }

References map.

◆ INLINE() [12/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static int   VisitSeqTwoByteStringMap *map, HeapObject *object)
inlineprivate

Definition at line 299 of file objects-visiting.h.

299  {
300  return SeqTwoByteString::cast(object)
301  ->SeqTwoByteStringSize(map->instance_type());
302  }

References map.

◆ INLINE() [13/13]

template<typename StaticVisitor >
v8::internal::StaticNewSpaceVisitor< StaticVisitor >::INLINE ( static void   VisitPointersHeap *heap, Object **start, Object **end)
inline

Definition at line 257 of file objects-visiting.h.

257  {
258  for (Object** p = start; p < end; p++) StaticVisitor::VisitPointer(heap, p);
259  }
kSerializedDataOffset Object
Definition: objects-inl.h:5322

Member Data Documentation

◆ table_

template<typename StaticVisitor >
VisitorDispatchTable< typename StaticNewSpaceVisitor< StaticVisitor >::Callback > v8::internal::StaticNewSpaceVisitor< StaticVisitor >::table_
staticprivate

The documentation for this class was generated from the following files: