Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
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)
 
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 2890 of file object.cc.

Constructor & Destructor Documentation

◆ WriteBarrierUpdateVisitor()

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

Definition at line 2892 of file object.cc.

2893 : ObjectPointerVisitor(thread->isolate_group()),
2894 thread_(thread),
2895 old_obj_(obj) {
2896 ASSERT(old_obj_->IsOldObject());
2897 }
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 2899 of file object.cc.

2899 {
2900 if (old_obj_->IsArray()) {
2901 for (ObjectPtr* slot = from; slot <= to; ++slot) {
2902 ObjectPtr value = *slot;
2903 if (value->IsHeapObject()) {
2904 old_obj_->untag()->CheckArrayPointerStore(slot, value, thread_);
2905 }
2906 }
2907 } else {
2908 for (ObjectPtr* slot = from; slot <= to; ++slot) {
2909 ObjectPtr value = *slot;
2910 if (value->IsHeapObject()) {
2911 old_obj_->untag()->CheckHeapPointerStore(value, thread_);
2912 }
2913 }
2914 }
2915 }
UntaggedObject * untag() const
uint8_t value

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