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

#include <objects-visiting.h>

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

Classes

class  DataObjectVisitor
 

Public Member Functions

 INLINE (static void IterateBody(Map *map, HeapObject *obj))
 
 INLINE (static void VisitPropertyCell(Map *map, HeapObject *object))
 
 INLINE (static void VisitCodeEntry(Heap *heap, Address entry_address))
 
 INLINE (static void VisitEmbeddedPointer(Heap *heap, RelocInfo *rinfo))
 
 INLINE (static void VisitCell(Heap *heap, RelocInfo *rinfo))
 
 INLINE (static void VisitDebugTarget(Heap *heap, RelocInfo *rinfo))
 
 INLINE (static void VisitCodeTarget(Heap *heap, RelocInfo *rinfo))
 
 INLINE (static void VisitCodeAgeSequence(Heap *heap, RelocInfo *rinfo))
 
 INLINE (static void VisitExternalReference(RelocInfo *rinfo))
 
 INLINE (static void VisitRuntimeEntry(RelocInfo *rinfo))
 
 INLINE (static void VisitNextCodeLink(Heap *heap, Object **slot))
 
- Public Member Functions inherited from v8::internal::StaticVisitorBase
 STATIC_ASSERT (kVisitorIdCount<=256)
 

Static Public Member Functions

static void Initialize ()
 
static void MarkInlinedFunctionsCode (Heap *heap, Code *code)
 
- 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)
 

Protected Types

typedef FlexibleBodyVisitor< StaticVisitor, FixedArray::BodyDescriptor, void > FixedArrayVisitor
 
typedef FlexibleBodyVisitor< StaticVisitor, JSObject::BodyDescriptor, void > JSObjectVisitor
 
typedef FlexibleBodyVisitor< StaticVisitor, StructBodyDescriptor, void > StructObjectVisitor
 
typedef void(* Callback) (Map *map, HeapObject *object)
 

Protected Member Functions

 INLINE (static void VisitMap(Map *map, HeapObject *object))
 
 INLINE (static void VisitCode(Map *map, HeapObject *object))
 
 INLINE (static void VisitSharedFunctionInfo(Map *map, HeapObject *object))
 
 INLINE (static void VisitConstantPoolArray(Map *map, HeapObject *object))
 
 INLINE (static void VisitAllocationSite(Map *map, HeapObject *object))
 
 INLINE (static void VisitWeakCollection(Map *map, HeapObject *object))
 
 INLINE (static void VisitJSFunction(Map *map, HeapObject *object))
 
 INLINE (static void VisitJSRegExp(Map *map, HeapObject *object))
 
 INLINE (static void VisitJSArrayBuffer(Map *map, HeapObject *object))
 
 INLINE (static void VisitJSTypedArray(Map *map, HeapObject *object))
 
 INLINE (static void VisitJSDataView(Map *map, HeapObject *object))
 
 INLINE (static void VisitNativeContext(Map *map, HeapObject *object))
 
 INLINE (static bool IsFlushable(Heap *heap, JSFunction *function))
 
 INLINE (static bool IsFlushable(Heap *heap, SharedFunctionInfo *shared_info))
 

Static Protected Member Functions

static void MarkMapContents (Heap *heap, Map *map)
 
static void MarkTransitionArray (Heap *heap, TransitionArray *transitions)
 
static void VisitSharedFunctionInfoStrongCode (Heap *heap, HeapObject *object)
 
static void VisitSharedFunctionInfoWeakCode (Heap *heap, HeapObject *object)
 
static void VisitJSFunctionStrongCode (Heap *heap, HeapObject *object)
 
static void VisitJSFunctionWeakCode (Heap *heap, HeapObject *object)
 

Static Protected 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::StaticMarkingVisitor< StaticVisitor >

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

Member Typedef Documentation

◆ Callback

template<typename StaticVisitor >
typedef void(* v8::internal::StaticMarkingVisitor< StaticVisitor >::Callback) (Map *map, HeapObject *object)
protected

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

◆ FixedArrayVisitor

template<typename StaticVisitor >
typedef FlexibleBodyVisitor<StaticVisitor, FixedArray::BodyDescriptor, void> v8::internal::StaticMarkingVisitor< StaticVisitor >::FixedArrayVisitor
protected

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

◆ JSObjectVisitor

template<typename StaticVisitor >
typedef FlexibleBodyVisitor<StaticVisitor, JSObject::BodyDescriptor, void> v8::internal::StaticMarkingVisitor< StaticVisitor >::JSObjectVisitor
protected

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

◆ StructObjectVisitor

template<typename StaticVisitor >
typedef FlexibleBodyVisitor<StaticVisitor, StructBodyDescriptor, void> v8::internal::StaticMarkingVisitor< StaticVisitor >::StructObjectVisitor
protected

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

Member Function Documentation

◆ Initialize()

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

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

127  {
128  table_.Register(kVisitShortcutCandidate,
129  &FixedBodyVisitor<StaticVisitor, ConsString::BodyDescriptor,
130  void>::Visit);
131 
132  table_.Register(kVisitConsString,
133  &FixedBodyVisitor<StaticVisitor, ConsString::BodyDescriptor,
134  void>::Visit);
135 
136  table_.Register(kVisitSlicedString,
137  &FixedBodyVisitor<StaticVisitor, SlicedString::BodyDescriptor,
138  void>::Visit);
139 
140  table_.Register(
141  kVisitSymbol,
142  &FixedBodyVisitor<StaticVisitor, Symbol::BodyDescriptor, void>::Visit);
143 
144  table_.Register(kVisitFixedArray, &FixedArrayVisitor::Visit);
145 
146  table_.Register(kVisitFixedDoubleArray, &DataObjectVisitor::Visit);
147 
148  table_.Register(kVisitFixedTypedArray, &DataObjectVisitor::Visit);
149 
150  table_.Register(kVisitFixedFloat64Array, &DataObjectVisitor::Visit);
151 
152  table_.Register(kVisitConstantPoolArray, &VisitConstantPoolArray);
153 
154  table_.Register(kVisitNativeContext, &VisitNativeContext);
155 
156  table_.Register(kVisitAllocationSite, &VisitAllocationSite);
157 
158  table_.Register(kVisitByteArray, &DataObjectVisitor::Visit);
159 
160  table_.Register(kVisitFreeSpace, &DataObjectVisitor::Visit);
161 
162  table_.Register(kVisitSeqOneByteString, &DataObjectVisitor::Visit);
163 
164  table_.Register(kVisitSeqTwoByteString, &DataObjectVisitor::Visit);
165 
166  table_.Register(kVisitJSWeakCollection, &VisitWeakCollection);
167 
168  table_.Register(
169  kVisitOddball,
170  &FixedBodyVisitor<StaticVisitor, Oddball::BodyDescriptor, void>::Visit);
171 
172  table_.Register(kVisitMap, &VisitMap);
173 
174  table_.Register(kVisitCode, &VisitCode);
175 
176  table_.Register(kVisitSharedFunctionInfo, &VisitSharedFunctionInfo);
177 
178  table_.Register(kVisitJSFunction, &VisitJSFunction);
179 
180  table_.Register(kVisitJSArrayBuffer, &VisitJSArrayBuffer);
181 
182  table_.Register(kVisitJSTypedArray, &VisitJSTypedArray);
183 
184  table_.Register(kVisitJSDataView, &VisitJSDataView);
185 
186  // Registration for kVisitJSRegExp is done by StaticVisitor.
187 
188  table_.Register(
189  kVisitCell,
190  &FixedBodyVisitor<StaticVisitor, Cell::BodyDescriptor, void>::Visit);
191 
192  table_.Register(kVisitPropertyCell, &VisitPropertyCell);
193 
194  table_.template RegisterSpecializations<DataObjectVisitor, kVisitDataObject,
195  kVisitDataObjectGeneric>();
196 
197  table_.template RegisterSpecializations<JSObjectVisitor, kVisitJSObject,
198  kVisitJSObjectGeneric>();
199 
200  table_.template RegisterSpecializations<StructObjectVisitor, kVisitStruct,
201  kVisitStructGeneric>();
202 }
FixedBodyDescriptor< kFirstOffset, kSecondOffset+kPointerSize, kSize > BodyDescriptor
Definition: objects.h:9069
FixedBodyDescriptor< kParentOffset, kOffsetOffset+kPointerSize, kSize > BodyDescriptor
Definition: objects.h:9113
static VisitorDispatchTable< Callback > table_
FlexibleBodyVisitor< StaticVisitor, JSObject::BodyDescriptor, void > JSObjectVisitor
FlexibleBodyVisitor< StaticVisitor, StructBodyDescriptor, void > StructObjectVisitor

Referenced by v8::internal::IncrementalMarkingMarkingVisitor::Initialize(), and v8::internal::MarkCompactMarkingVisitor::Initialize().

+ Here is the caller graph for this function:

◆ INLINE() [1/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static bool   IsFlushableHeap *heap, JSFunction *function)
protected

◆ INLINE() [2/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static bool   IsFlushableHeap *heap, SharedFunctionInfo *shared_info)
protected

◆ INLINE() [3/25]

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

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

360  {
361  table_.GetVisitor(map)(map, obj);
362  }
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::StaticMarkingVisitor< StaticVisitor >::table_.

◆ INLINE() [4/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitAllocationSiteMap *map, HeapObject *object)
protected

◆ INLINE() [5/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitCellHeap *heap, RelocInfo *rinfo)

◆ INLINE() [6/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitCodeMap *map, HeapObject *object)
protected

◆ INLINE() [7/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitCodeAgeSequenceHeap *heap, RelocInfo *rinfo)

◆ INLINE() [8/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitCodeEntryHeap *heap, Address entry_address)

◆ INLINE() [9/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitCodeTargetHeap *heap, RelocInfo *rinfo)

◆ INLINE() [10/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitConstantPoolArrayMap *map, HeapObject *object)
protected

◆ INLINE() [11/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitDebugTargetHeap *heap, RelocInfo *rinfo)

◆ INLINE() [12/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitEmbeddedPointerHeap *heap, RelocInfo *rinfo)

◆ INLINE() [13/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitExternalReferenceRelocInfo *rinfo)
inline

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

371 {}

◆ INLINE() [14/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitJSArrayBufferMap *map, HeapObject *object)
protected

◆ INLINE() [15/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitJSDataViewMap *map, HeapObject *object)
protected

◆ INLINE() [16/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitJSFunctionMap *map, HeapObject *object)
protected

◆ INLINE() [17/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitJSRegExpMap *map, HeapObject *object)
protected

◆ INLINE() [18/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitJSTypedArrayMap *map, HeapObject *object)
protected

◆ INLINE() [19/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitMapMap *map, HeapObject *object)
protected

◆ INLINE() [20/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitNativeContextMap *map, HeapObject *object)
protected

◆ INLINE() [21/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitNextCodeLinkHeap *heap, Object **slot)
inline

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

374 {}

◆ INLINE() [22/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitPropertyCellMap *map, HeapObject *object)

◆ INLINE() [23/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitRuntimeEntryRelocInfo *rinfo)
inline

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

372 {}

◆ INLINE() [24/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitSharedFunctionInfoMap *map, HeapObject *object)
protected

◆ INLINE() [25/25]

template<typename StaticVisitor >
v8::internal::StaticMarkingVisitor< StaticVisitor >::INLINE ( static void   VisitWeakCollectionMap *map, HeapObject *object)
protected

◆ MarkInlinedFunctionsCode()

template<typename StaticVisitor >
void v8::internal::StaticMarkingVisitor< StaticVisitor >::MarkInlinedFunctionsCode ( Heap heap,
Code code 
)
static

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

679  {
680  // Skip in absence of inlining.
681  // TODO(turbofan): Revisit once we support inlining.
682  if (code->is_turbofanned()) return;
683  // For optimized functions we should retain both non-optimized version
684  // of its code and non-optimized version of all inlined functions.
685  // This is required to support bailing out from inlined code.
686  DeoptimizationInputData* data =
687  DeoptimizationInputData::cast(code->deoptimization_data());
688  FixedArray* literals = data->LiteralArray();
689  for (int i = 0, count = data->InlinedFunctionCount()->value(); i < count;
690  i++) {
691  JSFunction* inlined = JSFunction::cast(literals->get(i));
692  StaticVisitor::MarkObject(heap, inlined->shared()->code());
693  }
694 }
enable harmony numeric literals(0o77, 0b11)") DEFINE_BOOL(harmony_object_literals

References v8::internal::JSFunction::code(), v8::internal::Code::is_turbofanned(), and literals().

+ Here is the call graph for this function:

◆ MarkMapContents()

template<typename StaticVisitor >
void v8::internal::StaticMarkingVisitor< StaticVisitor >::MarkMapContents ( Heap heap,
Map map 
)
staticprotected

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

602  {
603  // Make sure that the back pointer stored either in the map itself or
604  // inside its transitions array is marked. Skip recording the back
605  // pointer slot since map space is not compacted.
606  StaticVisitor::MarkObject(heap, HeapObject::cast(map->GetBackPointer()));
607 
608  // Treat pointers in the transitions array as weak and also mark that
609  // array to prevent visiting it later. Skip recording the transition
610  // array slot, since it will be implicitly recorded when the pointer
611  // fields of this map are visited.
612  if (map->HasTransitionArray()) {
613  TransitionArray* transitions = map->transitions();
614  MarkTransitionArray(heap, transitions);
615  }
616 
617  // Since descriptor arrays are potentially shared, ensure that only the
618  // descriptors that belong to this map are marked. The first time a
619  // non-empty descriptor array is marked, its header is also visited. The slot
620  // holding the descriptor array will be implicitly recorded when the pointer
621  // fields of this map are visited.
622  DescriptorArray* descriptors = map->instance_descriptors();
623  if (StaticVisitor::MarkObjectWithoutPush(heap, descriptors) &&
624  descriptors->length() > 0) {
625  StaticVisitor::VisitPointers(heap, descriptors->GetFirstElementAddress(),
626  descriptors->GetDescriptorEndSlot(0));
627  }
628  int start = 0;
629  int end = map->NumberOfOwnDescriptors();
630  if (start < end) {
631  StaticVisitor::VisitPointers(heap,
632  descriptors->GetDescriptorStartSlot(start),
633  descriptors->GetDescriptorEndSlot(end));
634  }
635 
636  // Mark prototype dependent codes array but do not push it onto marking
637  // stack, this will make references from it weak. We will clean dead
638  // codes when we iterate over maps in ClearNonLiveTransitions.
640  HeapObject* obj = HeapObject::cast(*slot);
641  heap->mark_compact_collector()->RecordSlot(slot, slot, obj);
642  StaticVisitor::MarkObjectWithoutPush(heap, obj);
643 
644  // Mark the pointer fields of the Map. Since the transitions array has
645  // been marked already, it is fine that one of these fields contains a
646  // pointer to it.
647  StaticVisitor::VisitPointers(
650 }
static Object ** RawField(HeapObject *obj, int offset)
Definition: objects-inl.h:1311
static const int kPointerFieldsEndOffset
Definition: objects.h:6207
static const int kPointerFieldsBeginOffset
Definition: objects.h:6206
static const int kDependentCodeOffset
Definition: objects.h:6201
static void MarkTransitionArray(Heap *heap, TransitionArray *transitions)
kSerializedDataOffset Object
Definition: objects-inl.h:5322

References v8::internal::DescriptorArray::GetDescriptorEndSlot(), v8::internal::DescriptorArray::GetDescriptorStartSlot(), v8::internal::FixedArray::GetFirstElementAddress(), v8::internal::Map::kDependentCodeOffset, v8::internal::Map::kPointerFieldsBeginOffset, v8::internal::Map::kPointerFieldsEndOffset, v8::internal::FixedArrayBase::length(), map, v8::internal::Heap::mark_compact_collector(), and v8::internal::HeapObject::RawField().

+ Here is the call graph for this function:

◆ MarkTransitionArray()

template<typename StaticVisitor >
void v8::internal::StaticMarkingVisitor< StaticVisitor >::MarkTransitionArray ( Heap heap,
TransitionArray transitions 
)
staticprotected

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

655  {
656  if (!StaticVisitor::MarkObjectWithoutPush(heap, transitions)) return;
657 
658  // Simple transitions do not have keys nor prototype transitions.
659  if (transitions->IsSimpleTransition()) return;
660 
661  if (transitions->HasPrototypeTransitions()) {
662  // Mark prototype transitions array but do not push it onto marking
663  // stack, this will make references from it weak. We will clean dead
664  // prototype transitions in ClearNonLiveTransitions.
665  Object** slot = transitions->GetPrototypeTransitionsSlot();
666  HeapObject* obj = HeapObject::cast(*slot);
667  heap->mark_compact_collector()->RecordSlot(slot, slot, obj);
668  StaticVisitor::MarkObjectWithoutPush(heap, obj);
669  }
670 
671  for (int i = 0; i < transitions->number_of_transitions(); ++i) {
672  StaticVisitor::VisitPointer(heap, transitions->GetKeySlot(i));
673  }
674 }

References v8::internal::TransitionArray::GetKeySlot(), v8::internal::TransitionArray::GetPrototypeTransitionsSlot(), v8::internal::TransitionArray::HasPrototypeTransitions(), v8::internal::TransitionArray::IsSimpleTransition(), v8::internal::Heap::mark_compact_collector(), and v8::internal::TransitionArray::number_of_transitions().

+ Here is the call graph for this function:

◆ VisitJSFunctionStrongCode()

template<typename StaticVisitor >
void v8::internal::StaticMarkingVisitor< StaticVisitor >::VisitJSFunctionStrongCode ( Heap heap,
HeapObject object 
)
staticprotected

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

833  {
834  Object** start_slot =
836  Object** end_slot =
838  StaticVisitor::VisitPointers(heap, start_slot, end_slot);
839 
840  VisitCodeEntry(heap, object->address() + JSFunction::kCodeEntryOffset);
843 
844  start_slot =
847  StaticVisitor::VisitPointers(heap, start_slot, end_slot);
848 }
static const int kNonWeakFieldsEndOffset
Definition: objects.h:7383
static const int kCodeEntryOffset
Definition: objects.h:7376
static const int kPrototypeOrInitialMapOffset
Definition: objects.h:7377
static const int kPropertiesOffset
Definition: objects.h:2193
STATIC_ASSERT(kVisitorIdCount<=256)
const int kPointerSize
Definition: globals.h:129

References v8::internal::HeapObject::address(), v8::internal::JSFunction::kCodeEntryOffset, v8::internal::JSFunction::kNonWeakFieldsEndOffset, v8::internal::kPointerSize, v8::internal::JSObject::kPropertiesOffset, v8::internal::JSFunction::kPrototypeOrInitialMapOffset, v8::internal::HeapObject::RawField(), and v8::internal::STATIC_ASSERT().

+ Here is the call graph for this function:

◆ VisitJSFunctionWeakCode()

template<typename StaticVisitor >
void v8::internal::StaticMarkingVisitor< StaticVisitor >::VisitJSFunctionWeakCode ( Heap heap,
HeapObject object 
)
staticprotected

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

853  {
854  Object** start_slot =
856  Object** end_slot =
858  StaticVisitor::VisitPointers(heap, start_slot, end_slot);
859 
860  // Skip visiting kCodeEntryOffset as it is treated weakly here.
863 
864  start_slot =
867  StaticVisitor::VisitPointers(heap, start_slot, end_slot);
868 }

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

+ Here is the call graph for this function:

◆ VisitSharedFunctionInfoStrongCode()

template<typename StaticVisitor >
void v8::internal::StaticMarkingVisitor< StaticVisitor >::VisitSharedFunctionInfoStrongCode ( Heap heap,
HeapObject object 
)
staticprotected

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

801  {
802  Object** start_slot = HeapObject::RawField(
804  Object** end_slot = HeapObject::RawField(
806  StaticVisitor::VisitPointers(heap, start_slot, end_slot);
807 }
static const int kStartOffset
Definition: objects.h:1452

References v8::internal::FixedBodyDescriptor< start_offset, end_offset, size >::kEndOffset, v8::internal::FixedBodyDescriptor< start_offset, end_offset, size >::kStartOffset, and v8::internal::HeapObject::RawField().

+ Here is the call graph for this function:

◆ VisitSharedFunctionInfoWeakCode()

template<typename StaticVisitor >
void v8::internal::StaticMarkingVisitor< StaticVisitor >::VisitSharedFunctionInfoWeakCode ( Heap heap,
HeapObject object 
)
staticprotected

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

812  {
813  Object** name_slot =
815  StaticVisitor::VisitPointer(heap, name_slot);
816 
817  // Skip visiting kCodeOffset as it is treated weakly here.
822 
823  Object** start_slot =
825  Object** end_slot = HeapObject::RawField(
827  StaticVisitor::VisitPointers(heap, start_slot, end_slot);
828 }
static const int kOptimizedCodeMapOffset
Definition: objects.h:6894
static const int kNameOffset
Definition: objects.h:6892
static const int kCodeOffset
Definition: objects.h:6893

References v8::internal::SharedFunctionInfo::kCodeOffset, v8::internal::FixedBodyDescriptor< start_offset, end_offset, size >::kEndOffset, v8::internal::SharedFunctionInfo::kNameOffset, v8::internal::SharedFunctionInfo::kOptimizedCodeMapOffset, v8::internal::kPointerSize, v8::internal::HeapObject::RawField(), and v8::internal::STATIC_ASSERT().

+ Here is the call graph for this function:

Member Data Documentation

◆ table_

template<typename StaticVisitor >
VisitorDispatchTable< typename StaticMarkingVisitor< StaticVisitor >::Callback > v8::internal::StaticMarkingVisitor< StaticVisitor >::table_
staticprotected

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