1032 {
1033 for (; first != last + 1; first++) {
1034 ObjectPtr obj = *first;
1035 if (obj->IsImmediateObject()) continue;
1036
1037
1038
1039
1040 if (obj->GetClassId() == kArrayCid) {
1043 continue;
1044 }
1045 }
1046
1047
1048
1049
1050 if (!obj->IsDartInstance() && !obj->IsContext() &&
1051 !obj->IsUnhandledException())
1052 continue;
1053
1054
1055 if (obj->untag()->IsCanonical()) continue;
1056
1057
1058
1059
1060 if (obj->untag()->InVMIsolateHeap()) continue;
1061
1062 switch (op_) {
1063 case Thread::RestoreWriteBarrierInvariantOp::kAddToRememberedSet:
1064 if (obj->IsOldObject()) {
1065 obj->untag()->EnsureInRememberedSet(current_);
1066 }
1069 }
1070 break;
1071 case Thread::RestoreWriteBarrierInvariantOp::kAddToDeferredMarkingStack:
1072
1075 break;
1076 }
1077 }
1078 }
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)