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

Public Member Functions

 WriteBarrierUpdateVisitor (Thread *thread, ObjectPtr obj)
 
void VisitPointers (ObjectPtr *from, ObjectPtr *to) 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 2829 of file object.cc.

Constructor & Destructor Documentation

◆ WriteBarrierUpdateVisitor()

dart::WriteBarrierUpdateVisitor::WriteBarrierUpdateVisitor ( Thread thread,
ObjectPtr  obj 
)
inlineexplicit

Definition at line 2831 of file object.cc.

2832 : ObjectPointerVisitor(thread->isolate_group()),
2833 thread_(thread),
2834 old_obj_(obj) {
2835 ASSERT(old_obj_->IsOldObject());
2836 }
ObjectPointerVisitor(IsolateGroup *isolate_group)
Definition: visitor.cc:11
#define ASSERT(E)

Member Function Documentation

◆ VisitPointers()

void dart::WriteBarrierUpdateVisitor::VisitPointers ( ObjectPtr from,
ObjectPtr to 
)
inlineoverridevirtual

Implements dart::ObjectPointerVisitor.

Definition at line 2838 of file object.cc.

2838 {
2839 if (old_obj_->IsArray()) {
2840 for (ObjectPtr* slot = from; slot <= to; ++slot) {
2841 ObjectPtr value = *slot;
2842 if (value->IsHeapObject()) {
2843 old_obj_->untag()->CheckArrayPointerStore(slot, value, thread_);
2844 }
2845 }
2846 } else {
2847 for (ObjectPtr* slot = from; slot <= to; ++slot) {
2848 ObjectPtr value = *slot;
2849 if (value->IsHeapObject()) {
2850 old_obj_->untag()->CheckHeapPointerStore(value, thread_);
2851 }
2852 }
2853 }
2854 }
UntaggedObject * untag() const
uint8_t value

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