965 {
966 for (; first != last + 1; first++) {
967 ObjectPtr obj = *first;
968
969 if (obj->IsImmediateObject()) continue;
970
971
972
973
974 if (obj->GetClassId() == kArrayCid) {
977 continue;
978 }
979 }
980
981
982
983
984 if (!obj->IsDartInstance() && !obj->IsContext() &&
985 !obj->IsUnhandledException())
986 continue;
987
988
989 if (obj->untag()->IsCanonical()) continue;
990
991
992
993
994 if (obj->untag()->InVMIsolateHeap()) continue;
995
996 switch (op_) {
997 case Thread::RestoreWriteBarrierInvariantOp::kAddToRememberedSet:
998 if (obj->IsOldObject()) {
999 obj->untag()->EnsureInRememberedSet(current_);
1000 }
1003 }
1004 break;
1005 case Thread::RestoreWriteBarrierInvariantOp::kAddToDeferredMarkingStack:
1006
1009 break;
1010 }
1011 }
1012 }
static constexpr intptr_t kMaxLengthForWriteBarrierElimination
static ObjectPtr RawCast(ObjectPtr obj)
void DeferredMarkingStackAddObject(ObjectPtr obj)
raw_obj untag() -> num_entries()) VARIABLE_COMPRESSED_VISITOR(Array, Smi::Value(raw_obj->untag() ->length())) VARIABLE_COMPRESSED_VISITOR(TypedData, TypedData::ElementSizeInBytes(raw_obj->GetClassId()) *Smi::Value(raw_obj->untag() ->length())) VARIABLE_COMPRESSED_VISITOR(Record, RecordShape(raw_obj->untag() ->shape()).num_fields()) VARIABLE_NULL_VISITOR(CompressedStackMaps, CompressedStackMaps::PayloadSizeOf(raw_obj)) VARIABLE_NULL_VISITOR(OneByteString, Smi::Value(raw_obj->untag() ->length())) VARIABLE_NULL_VISITOR(TwoByteString, Smi::Value(raw_obj->untag() ->length())) intptr_t UntaggedField::VisitFieldPointers(FieldPtr raw_obj, ObjectPointerVisitor *visitor)