Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Friends | List of all members
dart::UntaggedTypedDataView Class Reference

#include <raw_object.h>

Inheritance diagram for dart::UntaggedTypedDataView:
dart::UntaggedTypedDataBase dart::UntaggedPointerBase dart::UntaggedInstance dart::UntaggedObject

Public Member Functions

void RecomputeDataField ()
 
void RecomputeDataFieldForInternalTypedData ()
 
uint8_t * DataFieldForInternalTypedData () const
 
void ValidateInnerPointer ()
 
- Public Member Functions inherited from dart::UntaggedPointerBase
uint8_t * data ()
 
- Public Member Functions inherited from dart::UntaggedObject
 COMPILE_ASSERT (kNotMarkedBit+kBarrierOverlapShift==kAlwaysSetBit)
 
 COMPILE_ASSERT (kNewBit+kBarrierOverlapShift==kOldAndNotRememberedBit)
 
 COMPILE_ASSERT (kCardRememberedBit==0)
 
 COMPILE_ASSERT (kBitsPerByte *sizeof(ClassIdTagType) >=kClassIdTagSize)
 
 COMPILE_ASSERT (kClassIdTagMax==(1<< kClassIdTagSize) - 1)
 
bool IsNewObject () const
 
bool IsOldObject () const
 
uword tags () const
 
bool IsMarked () const
 
bool IsMarkedIgnoreRace () const
 
void SetMarkBit ()
 
void SetMarkBitUnsynchronized ()
 
void SetMarkBitRelease ()
 
void ClearMarkBit ()
 
void ClearMarkBitUnsynchronized ()
 
DART_WARN_UNUSED_RESULT bool TryAcquireMarkBit ()
 
bool IsCanonical () const
 
void SetCanonical ()
 
void ClearCanonical ()
 
bool IsImmutable () const
 
void SetImmutable ()
 
void ClearImmutable ()
 
bool InVMIsolateHeap () const
 
bool IsRemembered () const
 
bool TryAcquireRememberedBit ()
 
void ClearRememberedBit ()
 
void ClearRememberedBitUnsynchronized ()
 
DART_FORCE_INLINE void EnsureInRememberedSet (Thread *thread)
 
bool IsCardRemembered () const
 
void SetCardRememberedBitUnsynchronized ()
 
intptr_t GetClassId () const
 
intptr_t HeapSize () const
 
intptr_t HeapSize (uword tags) const
 
bool Contains (uword addr) const
 
void Validate (IsolateGroup *isolate_group) const
 
intptr_t VisitPointers (ObjectPointerVisitor *visitor)
 
template<class V >
DART_FORCE_INLINE intptr_t VisitPointersNonvirtual (V *visitor)
 
void VisitPointersPrecise (ObjectPointerVisitor *visitor)
 

Protected Member Functions

CompressedObjectPtrto_snapshot (Snapshot::Kind kind)
 
- Protected Member Functions inherited from dart::UntaggedTypedDataBase
 COMPRESSED_SMI_FIELD (SmiPtr, length)
 
- Protected Member Functions inherited from dart::UntaggedObject
template<typename type , std::memory_order order = std::memory_order_relaxed>
type LoadPointer (type const *addr) const
 
template<typename type , typename compressed_type , std::memory_order order = std::memory_order_relaxed>
type LoadCompressedPointer (compressed_type const *addr) const
 
uword heap_base () const
 
template<typename type , std::memory_order order = std::memory_order_relaxed>
void StorePointer (type const *addr, type value)
 
template<typename type , typename compressed_type , std::memory_order order = std::memory_order_relaxed>
void StoreCompressedPointer (compressed_type const *addr, type value)
 
template<typename type >
void StorePointer (type const *addr, type value, Thread *thread)
 
template<typename type , typename compressed_type >
void StoreCompressedPointer (compressed_type const *addr, type value, Thread *thread)
 
template<typename type >
void StorePointerUnaligned (type const *addr, type value, Thread *thread)
 
template<typename type , std::memory_order order = std::memory_order_relaxed, typename value_type = type>
void StoreArrayPointer (type const *addr, value_type value)
 
template<typename type , typename value_type = type>
void StoreArrayPointer (type const *addr, value_type value, Thread *thread)
 
template<typename type , typename compressed_type , std::memory_order order>
void StoreCompressedArrayPointer (compressed_type const *addr, type value)
 
template<typename type , typename compressed_type , std::memory_order order>
void StoreCompressedArrayPointer (compressed_type const *addr, type value, Thread *thread)
 
template<typename type , typename compressed_type >
void StoreCompressedArrayPointer (compressed_type const *addr, type value, Thread *thread)
 
template<typename type , typename compressed_type , std::memory_order order = std::memory_order_relaxed>
type ExchangeCompressedPointer (compressed_type const *addr, type value)
 
template<std::memory_order order = std::memory_order_relaxed>
SmiPtr LoadSmi (SmiPtr const *addr) const
 
template<std::memory_order order = std::memory_order_relaxed>
SmiPtr LoadCompressedSmi (CompressedSmiPtr const *addr) const
 
template<typename type , std::memory_order order = std::memory_order_relaxed>
void StoreSmi (type const *addr, type value)
 
template<std::memory_order order = std::memory_order_relaxed>
void StoreCompressedSmi (CompressedSmiPtr const *addr, SmiPtr value)
 

Friends

class Api
 
class Object
 
class ObjectPoolDeserializationCluster
 
class ObjectPoolSerializationCluster
 
class UntaggedObjectPool
 
class GCCompactor
 
template<bool >
class ScavengerVisitorBase
 
void InitializeTypedDataView (TypedDataViewPtr)
 

Additional Inherited Members

- Public Types inherited from dart::UntaggedObject
enum  TagBits {
  kCardRememberedBit = 0 , kCanonicalBit = 1 , kNotMarkedBit = 2 , kNewBit = 3 ,
  kAlwaysSetBit = 4 , kOldAndNotRememberedBit = 5 , kImmutableBit = 6 , kReservedBit = 7 ,
  kSizeTagPos = kReservedBit + 1 , kSizeTagSize = 4 , kClassIdTagPos = kSizeTagPos + kSizeTagSize , kClassIdTagSize = 20 ,
  kHashTagPos = kClassIdTagPos + kClassIdTagSize , kHashTagSize = 32
}
 
- Static Public Member Functions inherited from dart::UntaggedObject
static bool IsMarked (uword tags)
 
static ObjectPtr FromAddr (uword addr)
 
static uword ToAddr (const UntaggedObject *raw_obj)
 
static uword ToAddr (const ObjectPtr raw_obj)
 
static bool IsCanonical (intptr_t value)
 
- Static Public Attributes inherited from dart::UntaggedInstance
static constexpr bool kContainsCompressedPointers = false
 
- Static Public Attributes inherited from dart::UntaggedObject
static constexpr intptr_t kGenerationalBarrierMask = 1 << kNewBit
 
static constexpr intptr_t kIncrementalBarrierMask = 1 << kNotMarkedBit
 
static constexpr intptr_t kBarrierOverlapShift = 2
 
- Static Protected Member Functions inherited from dart::UntaggedObject
template<typename T >
static DART_FORCE_INLINE uword from_offset ()
 
template<typename T >
static DART_FORCE_INLINE uword to_offset (intptr_t length=0)
 
template<>
DART_FORCE_INLINE uword from_offset ()
 
template<>
DART_FORCE_INLINE uword to_offset (intptr_t length)
 
template<>
DART_FORCE_INLINE uword to_offset (intptr_t length)
 
template<>
DART_FORCE_INLINE uword to_offset (intptr_t length)
 
- Protected Attributes inherited from dart::UntaggedPointerBase
uint8_t * data_
 
- Static Protected Attributes inherited from dart::UntaggedObject
static constexpr bool kContainsCompressedPointers = false
 
static constexpr bool kContainsPointerFields = false
 

Detailed Description

Definition at line 3126 of file raw_object.h.

Member Function Documentation

◆ DataFieldForInternalTypedData()

uint8_t * dart::UntaggedTypedDataView::DataFieldForInternalTypedData ( ) const
inline

Definition at line 3147 of file raw_object.h.

3147 {
3148 const intptr_t offset_in_bytes = RawSmiValue(this->offset_in_bytes());
3149 uint8_t* payload =
3150 reinterpret_cast<uint8_t*>(UntaggedObject::ToAddr(typed_data()) +
3152 return payload + offset_in_bytes;
3153 }
static uword ToAddr(const UntaggedObject *raw_obj)
Definition raw_object.h:501
static intptr_t payload_offset()
intptr_t RawSmiValue(const SmiPtr raw_value)

◆ RecomputeDataField()

void dart::UntaggedTypedDataView::RecomputeDataField ( )
inline

Definition at line 3131 of file raw_object.h.

3131 {
3132 const intptr_t offset_in_bytes = RawSmiValue(this->offset_in_bytes());
3133 uint8_t* payload = typed_data()->untag()->data_;
3134 data_ = payload + offset_in_bytes;
3135 }

◆ RecomputeDataFieldForInternalTypedData()

void dart::UntaggedTypedDataView::RecomputeDataFieldForInternalTypedData ( )
inline

Definition at line 3143 of file raw_object.h.

3143 {
3145 }
uint8_t * DataFieldForInternalTypedData() const

◆ to_snapshot()

CompressedObjectPtr * dart::UntaggedTypedDataView::to_snapshot ( Snapshot::Kind  kind)
inlineprotected

Definition at line 3175 of file raw_object.h.

3175{ return to(); }

◆ ValidateInnerPointer()

void dart::UntaggedTypedDataView::ValidateInnerPointer ( )
inline

Definition at line 3155 of file raw_object.h.

3155 {
3156 if (typed_data()->untag()->GetClassId() == kNullCid) {
3157 // The view object must have gotten just initialized.
3158 if (data_ != nullptr || RawSmiValue(offset_in_bytes()) != 0 ||
3159 RawSmiValue(length()) != 0) {
3160 FATAL("TypedDataView has invalid inner pointer.");
3161 }
3162 } else {
3163 const intptr_t offset_in_bytes = RawSmiValue(this->offset_in_bytes());
3164 uint8_t* payload = typed_data()->untag()->data_;
3165 if ((payload + offset_in_bytes) != data_) {
3166 FATAL("TypedDataView has invalid inner pointer.");
3167 }
3168 }
3169 }
intptr_t GetClassId() const
Definition raw_object.h:371
#define FATAL(error)
size_t length
@ kNullCid
Definition class_id.h:252
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)

Friends And Related Symbol Documentation

◆ Api

friend class Api
friend

Definition at line 3178 of file raw_object.h.

◆ GCCompactor

friend class GCCompactor
friend

Definition at line 3183 of file raw_object.h.

◆ InitializeTypedDataView

void InitializeTypedDataView ( TypedDataViewPtr  obj)
friend

Definition at line 355 of file object_graph_copy.cc.

355 {
356 obj.untag()->typed_data_ = TypedDataBase::null();
357 obj.untag()->offset_in_bytes_ = Smi::New(0);
358 obj.untag()->length_ = Smi::New(0);
359}
static ObjectPtr null()
Definition object.h:433
static SmiPtr New(intptr_t value)
Definition object.h:9985

◆ Object

friend class Object
friend

Definition at line 3179 of file raw_object.h.

◆ ObjectPoolDeserializationCluster

friend class ObjectPoolDeserializationCluster
friend

Definition at line 3180 of file raw_object.h.

◆ ObjectPoolSerializationCluster

friend class ObjectPoolSerializationCluster
friend

Definition at line 3181 of file raw_object.h.

◆ ScavengerVisitorBase

template<bool >
friend class ScavengerVisitorBase
friend

Definition at line 3185 of file raw_object.h.

◆ UntaggedObjectPool

friend class UntaggedObjectPool
friend

Definition at line 3182 of file raw_object.h.


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