Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Friends | List of all members
dart::UntaggedArray Class Reference

#include <raw_object.h>

Inheritance diagram for dart::UntaggedArray:
dart::UntaggedInstance dart::UntaggedObject dart::UntaggedImmutableArray

Friends

class MapSerializationCluster
 
class MapDeserializationCluster
 
class SetSerializationCluster
 
class SetDeserializationCluster
 
class CodeSerializationCluster
 
class CodeDeserializationCluster
 
class Deserializer
 
class UntaggedCode
 
class UntaggedImmutableArray
 
class GrowableObjectArray
 
class Map
 
class UntaggedMap
 
class UntaggedConstMap
 
class Object
 
class ICData
 
class SubtypeTestCache
 
class ReversePc
 
template<typename Table , bool kAllCanonicalObjectsAreIncludedIntoSet>
class CanonicalSetDeserializationCluster
 
class Page
 
class FastObjectCopy
 
void UpdateLengthField (intptr_t, ObjectPtr, ObjectPtr)
 

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
}
 
- 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)
 
- 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
 
- 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)
 
- 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)
 
- Static Protected Attributes inherited from dart::UntaggedObject
static constexpr bool kContainsCompressedPointers = false
 
static constexpr bool kContainsPointerFields = false
 

Detailed Description

Definition at line 3197 of file raw_object.h.

Friends And Related Symbol Documentation

◆ CanonicalSetDeserializationCluster

template<typename Table , bool kAllCanonicalObjectsAreIncludedIntoSet>
friend class CanonicalSetDeserializationCluster
friend

Definition at line 3224 of file raw_object.h.

◆ CodeDeserializationCluster

friend class CodeDeserializationCluster
friend

Definition at line 3211 of file raw_object.h.

◆ CodeSerializationCluster

friend class CodeSerializationCluster
friend

Definition at line 3210 of file raw_object.h.

◆ Deserializer

friend class Deserializer
friend

Definition at line 3212 of file raw_object.h.

◆ FastObjectCopy

friend class FastObjectCopy
friend

Definition at line 3226 of file raw_object.h.

◆ GrowableObjectArray

friend class GrowableObjectArray
friend

Definition at line 3215 of file raw_object.h.

◆ ICData

friend class ICData
friend

Definition at line 3220 of file raw_object.h.

◆ Map

friend class Map
friend

Definition at line 3216 of file raw_object.h.

◆ MapDeserializationCluster

friend class MapDeserializationCluster
friend

Definition at line 3207 of file raw_object.h.

◆ MapSerializationCluster

friend class MapSerializationCluster
friend

Definition at line 3206 of file raw_object.h.

◆ Object

friend class Object
friend

Definition at line 3219 of file raw_object.h.

◆ Page

friend class Page
friend

Definition at line 3225 of file raw_object.h.

◆ ReversePc

friend class ReversePc
friend

Definition at line 3222 of file raw_object.h.

◆ SetDeserializationCluster

friend class SetDeserializationCluster
friend

Definition at line 3209 of file raw_object.h.

◆ SetSerializationCluster

friend class SetSerializationCluster
friend

Definition at line 3208 of file raw_object.h.

◆ SubtypeTestCache

friend class SubtypeTestCache
friend

Definition at line 3221 of file raw_object.h.

◆ UntaggedCode

friend class UntaggedCode
friend

Definition at line 3213 of file raw_object.h.

◆ UntaggedConstMap

friend class UntaggedConstMap
friend

Definition at line 3218 of file raw_object.h.

◆ UntaggedImmutableArray

friend class UntaggedImmutableArray
friend

Definition at line 3214 of file raw_object.h.

◆ UntaggedMap

friend class UntaggedMap
friend

Definition at line 3217 of file raw_object.h.

◆ UpdateLengthField

void UpdateLengthField ( intptr_t  cid,
ObjectPtr  from,
ObjectPtr  to 
)
friend

Definition at line 280 of file object_graph_copy.cc.

280 {
281 // We share these objects - never copy them.
283
284 // We update any in-heap variable sized object with the length to keep the
285 // length and the size in the object header in-sync for the GC.
286 if (cid == kArrayCid || cid == kImmutableArrayCid) {
287 static_cast<UntaggedArray*>(to.untag())->length_ =
288 static_cast<UntaggedArray*>(from.untag())->length_;
289 } else if (cid == kContextCid) {
290 static_cast<UntaggedContext*>(to.untag())->num_variables_ =
291 static_cast<UntaggedContext*>(from.untag())->num_variables_;
292 } else if (IsTypedDataClassId(cid)) {
293 static_cast<UntaggedTypedDataBase*>(to.untag())->length_ =
294 static_cast<UntaggedTypedDataBase*>(from.untag())->length_;
295 } else if (cid == kRecordCid) {
296 static_cast<UntaggedRecord*>(to.untag())->shape_ =
297 static_cast<UntaggedRecord*>(from.untag())->shape_;
298 }
299}
#define ASSERT(E)
bool IsTypedDataClassId(intptr_t index)
Definition class_id.h:433
const intptr_t cid
bool IsStringClassId(intptr_t index)
Definition class_id.h:350

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