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

#include <raw_object.h>

Inheritance diagram for dart::UntaggedFunction:
dart::UntaggedObject

Classes

class  UnboxedParameterBitmap
 

Public Types

enum  Kind
 
enum  AsyncModifier {
  kNoModifier = 0x0 , kAsyncBit = 0x1 , kGeneratorBit = 0x2 , kAsync = kAsyncBit ,
  kSyncGen = kGeneratorBit , kAsyncGen = kAsyncBit | kGeneratorBit
}
 
- 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
}
 

Static Public Member Functions

static const char * KindToCString (Kind k)
 
static bool ParseKind (const char *str, Kind *out)
 
- 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)
 

Friends

class Class
 
class UnitDeserializationRoots
 

Additional Inherited Members

- 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)
 
- 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 1232 of file raw_object.h.

Member Enumeration Documentation

◆ AsyncModifier

Enumerator
kNoModifier 
kAsyncBit 
kGeneratorBit 
kAsync 
kSyncGen 
kAsyncGen 

Definition at line 1307 of file raw_object.h.

◆ Kind

Definition at line 1277 of file raw_object.h.

1277 {
1278#define KIND_DEFN(Name) k##Name,
1280#undef KIND_DEFN
1281 };
#define FOR_EACH_RAW_FUNCTION_KIND(V)
Definition: raw_object.h:1240
#define KIND_DEFN(Name)
Definition: raw_object.h:1278

Member Function Documentation

◆ KindToCString()

static const char * dart::UntaggedFunction::KindToCString ( Kind  k)
inlinestatic

Definition at line 1283 of file raw_object.h.

1283 {
1284 switch (k) {
1285#define KIND_CASE(Name) \
1286 case Kind::k##Name: \
1287 return #Name;
1289#undef KIND_CASE
1290 default:
1291 UNREACHABLE();
1292 return nullptr;
1293 }
1294 }
#define UNREACHABLE()
Definition: assert.h:248
#define KIND_CASE(Name)

◆ ParseKind()

static bool dart::UntaggedFunction::ParseKind ( const char *  str,
Kind out 
)
inlinestatic

Definition at line 1296 of file raw_object.h.

1296 {
1297#define KIND_CASE(Name) \
1298 if (strcmp(str, #Name) == 0) { \
1299 *out = Kind::k##Name; \
1300 return true; \
1301 }
1303#undef KIND_CASE
1304 return false;
1305 }

Friends And Related Function Documentation

◆ Class

friend class Class
friend

Definition at line 1386 of file raw_object.h.

◆ UnitDeserializationRoots

friend class UnitDeserializationRoots
friend

Definition at line 1387 of file raw_object.h.


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