Flutter Engine
The Flutter Engine
Public Types | Public Member Functions | Friends | List of all members
dart::UntaggedClass Class Reference

#include <raw_object.h>

Inheritance diagram for dart::UntaggedClass:
dart::UntaggedObject

Public Types

enum  ClassFinalizedState { kAllocated = 0 , kPreFinalized , kFinalized , kAllocateFinalized }
 
enum  ClassLoadingState { kNameOnly = 0 , kDeclarationLoaded , kTypeFinalized }
 
- Public Types inherited from dart::UntaggedObject
enum  TagBits {
  kCardRememberedBit = 0 , kCanonicalBit = 1 , kNotMarkedBit = 2 , kNewOrEvacuationCandidateBit = 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

classid_t id () const
 
- Public Member Functions inherited from dart::UntaggedObject
 COMPILE_ASSERT (kNotMarkedBit+kBarrierOverlapShift==kAlwaysSetBit)
 
 COMPILE_ASSERT (kNewOrEvacuationCandidateBit+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
 
uword tags_ignore_race () const
 
bool IsMarked () const
 
void SetMarkBit ()
 
void SetMarkBitUnsynchronized ()
 
void SetMarkBitRelease ()
 
void ClearMarkBit ()
 
void ClearMarkBitUnsynchronized ()
 
DART_WARN_UNUSED_RESULT bool TryAcquireMarkBit ()
 
bool IsEvacuationCandidate ()
 
void SetIsEvacuationCandidate ()
 
void SetIsEvacuationCandidateUnsynchronized ()
 
void ClearIsEvacuationCandidateUnsynchronized ()
 
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)
 

Friends

class Instance
 
class IsolateGroup
 
class Object
 
class UntaggedInstance
 
class UntaggedInstructions
 
class UntaggedTypeArguments
 
class MessageSerializer
 
class InstanceSerializationCluster
 
class TypeSerializationCluster
 
class CidRewriteVisitor
 
class FinalizeVMIsolateVisitor
 
class Api
 

Additional Inherited Members

- Static Public Member Functions inherited from dart::UntaggedObject
static bool IsMarked (uword tags)
 
static bool IsEvacuationCandidate (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::UntaggedObject
static constexpr intptr_t kGenerationalBarrierMask
 
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 1049 of file raw_object.h.

Member Enumeration Documentation

◆ ClassFinalizedState

Enumerator
kAllocated 
kPreFinalized 
kFinalized 
kAllocateFinalized 

Definition at line 1051 of file raw_object.h.

1051 {
1052 kAllocated = 0, // Initial state.
1053 kPreFinalized, // VM classes: size precomputed, but no checks done.
1054 kFinalized, // Class parsed, code compiled, not ready for allocation.
1055 kAllocateFinalized, // CHA invalidated, class is ready for allocation.
1056 };

◆ ClassLoadingState

Enumerator
kNameOnly 
kDeclarationLoaded 
kTypeFinalized 

Definition at line 1057 of file raw_object.h.

1057 {
1058 // Class object is created, but it is not filled up.
1059 // At this state class can only be used as a forward reference during
1060 // class loading.
1061 kNameOnly = 0,
1062 // Class declaration information such as type parameters, supertype and
1063 // implemented interfaces are loaded. However, types in the class are
1064 // not finalized yet.
1066 // Types in the class are finalized. At this point, members can be loaded
1067 // and class can be finalized.
1069 };

Member Function Documentation

◆ id()

classid_t dart::UntaggedClass::id ( ) const
inline

Definition at line 1071 of file raw_object.h.

1071{ return id_; }

Friends And Related Function Documentation

◆ Api

friend class Api
friend

Definition at line 1189 of file raw_object.h.

◆ CidRewriteVisitor

friend class CidRewriteVisitor
friend

Definition at line 1187 of file raw_object.h.

◆ FinalizeVMIsolateVisitor

friend class FinalizeVMIsolateVisitor
friend

Definition at line 1188 of file raw_object.h.

◆ Instance

friend class Instance
friend

Definition at line 1178 of file raw_object.h.

◆ InstanceSerializationCluster

friend class InstanceSerializationCluster
friend

Definition at line 1185 of file raw_object.h.

◆ IsolateGroup

friend class IsolateGroup
friend

Definition at line 1179 of file raw_object.h.

◆ MessageSerializer

friend class MessageSerializer
friend

Definition at line 1184 of file raw_object.h.

◆ Object

friend class Object
friend

Definition at line 1180 of file raw_object.h.

◆ TypeSerializationCluster

friend class TypeSerializationCluster
friend

Definition at line 1186 of file raw_object.h.

◆ UntaggedInstance

friend class UntaggedInstance
friend

Definition at line 1181 of file raw_object.h.

◆ UntaggedInstructions

friend class UntaggedInstructions
friend

Definition at line 1182 of file raw_object.h.

◆ UntaggedTypeArguments

friend class UntaggedTypeArguments
friend

Definition at line 1183 of file raw_object.h.


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