|
| IncrementalForwardingVisitor (Thread *thread) |
|
void | VisitObject (ObjectPtr obj) override |
|
void | VisitPointers (ObjectPtr *first, ObjectPtr *last) override |
|
bool | PredicateVisitPointers (ObjectPtr *first, ObjectPtr *last) override |
|
void | VisitHandle (uword addr) override |
|
void | VisitTypedDataViewPointers (TypedDataViewPtr view, CompressedObjectPtr *first, CompressedObjectPtr *last) override |
|
bool | CanVisitSuspendStatePointers (SuspendStatePtr suspend_state) override |
|
void | UpdateViews () |
|
void | UpdateSuspendStates () |
|
| ObjectPointerVisitor (IsolateGroup *isolate_group) |
|
virtual | ~ObjectPointerVisitor () |
|
IsolateGroup * | isolate_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 ClassTable * | class_table () const |
|
virtual bool | CanVisitSuspendStatePointers (SuspendStatePtr suspend_state) |
|
| PredicateObjectPointerVisitor () |
|
virtual | ~PredicateObjectPointerVisitor () |
|
virtual bool | PredicateVisitPointers (ObjectPtr *first, ObjectPtr *last)=0 |
|
bool | PredicateVisitCompressedPointers (uword heap_base, CompressedObjectPtr *first, CompressedObjectPtr *last) |
|
| ObjectVisitor () |
|
virtual | ~ObjectVisitor () |
|
virtual void | VisitObject (ObjectPtr obj)=0 |
|
Public Member Functions inherited from dart::HandleVisitor |
| HandleVisitor (Thread *thread) |
|
virtual | ~HandleVisitor () |
|
Thread * | thread () const |
|
virtual void | VisitHandle (uword addr)=0 |
|
Definition at line 367 of file incremental_compactor.cc.
◆ IncrementalForwardingVisitor()
dart::IncrementalForwardingVisitor::IncrementalForwardingVisitor |
( |
Thread * |
thread | ) |
|
|
inlineexplicit |
Definition at line 372 of file incremental_compactor.cc.
HandleVisitor(Thread *thread)
ObjectPointerVisitor(IsolateGroup *isolate_group)
IsolateGroup * isolate_group() const
◆ CanVisitSuspendStatePointers()
bool dart::IncrementalForwardingVisitor::CanVisitSuspendStatePointers |
( |
SuspendStatePtr |
suspend_state | ) |
|
|
inlineoverridevirtual |
Reimplemented from dart::ObjectPointerVisitor.
Definition at line 465 of file incremental_compactor.cc.
465 {
466 if ((suspend_state->untag()->pc() != 0) && !can_visit_stack_frames_) {
467
468
469
470
471
472
473 suspend_states_.
Add(suspend_state);
474 return false;
475 }
476 return true;
477 }
◆ PredicateVisitPointers()
bool dart::IncrementalForwardingVisitor::PredicateVisitPointers |
( |
ObjectPtr * |
first, |
|
|
ObjectPtr * |
last |
|
) |
| |
|
inlineoverridevirtual |
Implements dart::PredicateObjectPointerVisitor.
Definition at line 384 of file incremental_compactor.cc.
384 {
385 bool has_new_target = false;
386 for (ObjectPtr* ptr = first; ptr <= last; ptr++) {
388 if (
target->IsImmediateObject())
continue;
389 if (
target->IsNewObject()) {
390 has_new_target = true;
391 continue;
392 }
393
394 if (
target->IsForwardingCorpse()) {
398 ForwardingCorpse* forwarder =
reinterpret_cast<ForwardingCorpse*
>(
addr);
399 *ptr = forwarder->target();
400 } else {
403 }
404 }
405 return has_new_target;
406 }
static uword ToAddr(const UntaggedObject *raw_obj)
◆ UpdateSuspendStates()
void dart::IncrementalForwardingVisitor::UpdateSuspendStates |
( |
| ) |
|
|
inline |
Definition at line 496 of file incremental_compactor.cc.
496 {
497 can_visit_stack_frames_ = true;
500 auto suspend_state = suspend_states_[
i];
501 suspend_state->untag()->VisitPointers(this);
502 }
503 }
◆ UpdateViews()
void dart::IncrementalForwardingVisitor::UpdateViews |
( |
| ) |
|
|
inline |
Definition at line 479 of file incremental_compactor.cc.
479 {
482 auto raw_view = typed_data_views_[
i];
484 raw_view->untag()->typed_data()->GetClassIdMayBeSmi();
485
486
487
489 raw_view->untag()->RecomputeDataFieldForInternalTypedData();
490 } else {
492 }
493 }
494 }
bool IsTypedDataClassId(intptr_t index)
bool IsExternalTypedDataClassId(intptr_t index)
◆ VisitHandle()
void dart::IncrementalForwardingVisitor::VisitHandle |
( |
uword |
addr | ) |
|
|
inlineoverridevirtual |
Implements dart::HandleVisitor.
Definition at line 441 of file incremental_compactor.cc.
441 {
442 FinalizablePersistentHandle* handle =
443 reinterpret_cast<FinalizablePersistentHandle*
>(
addr);
444 ObjectPtr
target = handle->ptr();
445 if (
target->IsHeapObject() &&
target->IsForwardingCorpse()) {
447 ForwardingCorpse* forwarder =
reinterpret_cast<ForwardingCorpse*
>(
addr);
448 *handle->ptr_addr() = forwarder->target();
449 }
450 }
◆ VisitObject()
void dart::IncrementalForwardingVisitor::VisitObject |
( |
ObjectPtr |
obj | ) |
|
|
inlineoverridevirtual |
◆ VisitPointers()
void dart::IncrementalForwardingVisitor::VisitPointers |
( |
ObjectPtr * |
first, |
|
|
ObjectPtr * |
last |
|
) |
| |
|
inlineoverridevirtual |
◆ VisitTypedDataViewPointers()
Reimplemented from dart::ObjectPointerVisitor.
Definition at line 452 of file incremental_compactor.cc.
454 {
455 ObjectPtr old_backing = view->untag()->typed_data();
457 ObjectPtr new_backing = view->untag()->typed_data();
458
459 const bool backing_moved = old_backing != new_backing;
460 if (backing_moved) {
461 typed_data_views_.
Add(view);
462 }
463 }
void VisitCompressedPointers(uword heap_base, CompressedObjectPtr *first, CompressedObjectPtr *last)
The documentation for this class was generated from the following file: