Flutter Engine
The Flutter Engine
Public Member Functions | List of all members
dart::StoreBufferForwardingVisitor Class Reference
Inheritance diagram for dart::StoreBufferForwardingVisitor:
dart::ObjectPointerVisitor

Public Member Functions

 StoreBufferForwardingVisitor (IsolateGroup *isolate_group, IncrementalForwardingVisitor *visitor)
 
void VisitPointers (ObjectPtr *first, ObjectPtr *last) override
 
- Public Member Functions inherited from dart::ObjectPointerVisitor
 ObjectPointerVisitor (IsolateGroup *isolate_group)
 
virtual ~ObjectPointerVisitor ()
 
IsolateGroupisolate_group () const
 
virtual void VisitTypedDataViewPointers (TypedDataViewPtr view, CompressedObjectPtr *first, CompressedObjectPtr *last)
 
virtual void VisitPointers (ObjectPtr *first, ObjectPtr *last)=0
 
void VisitCompressedPointers (uword heap_base, CompressedObjectPtr *first, CompressedObjectPtr *last)
 
void VisitPointers (ObjectPtr *p, intptr_t len)
 
void VisitPointer (ObjectPtr *p)
 
const char * gc_root_type () const
 
void set_gc_root_type (const char *gc_root_type)
 
void clear_gc_root_type ()
 
virtual bool visit_weak_persistent_handles () const
 
virtual bool trace_values_through_fields () const
 
const ClassTableclass_table () const
 
virtual bool CanVisitSuspendStatePointers (SuspendStatePtr suspend_state)
 

Detailed Description

Definition at line 513 of file incremental_compactor.cc.

Constructor & Destructor Documentation

◆ StoreBufferForwardingVisitor()

dart::StoreBufferForwardingVisitor::StoreBufferForwardingVisitor ( IsolateGroup isolate_group,
IncrementalForwardingVisitor visitor 
)
inline

Definition at line 515 of file incremental_compactor.cc.

517 : ObjectPointerVisitor(isolate_group), visitor_(visitor) {}
IsolateGroup * isolate_group() const
Definition: visitor.h:25
ObjectPointerVisitor(IsolateGroup *isolate_group)
Definition: visitor.cc:11

Member Function Documentation

◆ VisitPointers()

void dart::StoreBufferForwardingVisitor::VisitPointers ( ObjectPtr first,
ObjectPtr last 
)
inlineoverridevirtual

Implements dart::ObjectPointerVisitor.

Definition at line 519 of file incremental_compactor.cc.

519 {
520 for (ObjectPtr* ptr = first; ptr <= last; ptr++) {
521 ObjectPtr obj = *ptr;
522 ASSERT(!obj->IsImmediateOrNewObject());
523
524 if (obj->IsForwardingCorpse()) {
525 ASSERT(!obj->untag()->IsMarked());
526 ASSERT(!obj->untag()->IsEvacuationCandidate());
528 ForwardingCorpse* forwarder = reinterpret_cast<ForwardingCorpse*>(addr);
529 obj = forwarder->target();
530 *ptr = obj;
531 } else {
532 ASSERT(obj->untag()->IsMarked());
533 ASSERT(!obj->untag()->IsEvacuationCandidate());
534 }
535
536 visitor_->VisitObject(obj);
537 }
538 }
void VisitObject(ObjectPtr obj) override
static uword ToAddr(const UntaggedObject *raw_obj)
Definition: raw_object.h:522
#define ASSERT(E)
uintptr_t uword
Definition: globals.h:501

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