Flutter Engine
The Flutter Engine
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions | Variables
object.h File Reference
#include <limits>
#include <tuple>
#include <utility>
#include "include/dart_api.h"
#include "platform/assert.h"
#include "platform/atomic.h"
#include "platform/thread_sanitizer.h"
#include "platform/utils.h"
#include "vm/bitmap.h"
#include "vm/code_comments.h"
#include "vm/code_entry_kind.h"
#include "vm/compiler/assembler/object_pool_builder.h"
#include "vm/compiler/method_recognizer.h"
#include "vm/compiler/runtime_api.h"
#include "vm/dart.h"
#include "vm/flags.h"
#include "vm/globals.h"
#include "vm/growable_array.h"
#include "vm/handles.h"
#include "vm/heap/heap.h"
#include "vm/isolate.h"
#include "vm/json_stream.h"
#include "vm/os.h"
#include "vm/raw_object.h"
#include "vm/report.h"
#include "vm/static_type_exactness_state.h"
#include "vm/thread.h"
#include "vm/token_position.h"

Go to the source code of this file.

Classes

class  dart::Object
 
class  dart::PassiveObject
 
class  dart::Class
 
class  dart::PatchClass
 
class  dart::SingleTargetCache
 
class  dart::MonomorphicSmiableCall
 
class  dart::CallSiteData
 
class  dart::UnlinkedCall
 
class  dart::ICData
 
struct  dart::NameFormattingParams
 
class  dart::Function
 
struct  dart::Function::AwaiterLink
 
struct  dart::Function::ICDataArrayIndices
 
class  dart::Function::KindBits
 
class  dart::Function::RecognizedBits
 
class  dart::Function::ModifierBits
 
class  dart::ClosureData
 
class  dart::FfiTrampolineData
 
class  dart::Field
 
class  dart::Script
 
class  dart::DictionaryIterator
 
class  dart::ClassDictionaryIterator
 
class  dart::Library
 
class  dart::Namespace
 
class  dart::KernelProgramInfo
 
class  dart::ObjectPool
 
struct  dart::ObjectPool::Entry
 
struct  dart::ObjectPool::ArrayTraits
 
class  dart::Instructions
 
class  dart::Instructions::SizeBits
 
class  dart::InstructionsSection
 
class  dart::InstructionsTable
 
class  dart::LocalVarDescriptors
 
class  dart::PcDescriptors
 
class  dart::PcDescriptors::Iterator
 
class  dart::CodeSourceMap
 
class  dart::CompressedStackMaps
 
class  dart::CompressedStackMaps::RawPayloadHandle
 
class  dart::CompressedStackMaps::Iterator< PayloadHandle >
 
class  dart::ExceptionHandlers
 
struct  dart::ExceptionHandlers::ArrayTraits
 
class  dart::WeakSerializationReference
 
class  dart::WeakArray
 
struct  dart::WeakArray::ArrayTraits
 
class  dart::Code
 
class  dart::Code::KindField
 
class  dart::Code::EntryPointField
 
class  dart::Code::OffsetField
 
struct  dart::Code::ArrayTraits
 
class  dart::Context
 
struct  dart::Context::ArrayTraits
 
class  dart::ContextScope
 
struct  dart::ContextScope::ArrayTraits
 
class  dart::Sentinel
 
class  dart::MegamorphicCache
 
class  dart::SubtypeTestCache
 
class  dart::LoadingUnit
 
class  dart::Error
 
class  dart::ApiError
 
class  dart::LanguageError
 
class  dart::UnhandledException
 
class  dart::UnwindError
 
class  dart::Instance
 
class  dart::LibraryPrefix
 
class  dart::TypeParameters
 
class  dart::TypeArguments
 
struct  dart::TypeArguments::ArrayTraits
 
class  dart::TypeArguments::Cache
 
struct  dart::TypeArguments::Cache::KeyLocation
 
class  dart::AbstractType
 
class  dart::Type
 
class  dart::FunctionType
 
class  dart::TypeParameter
 
class  dart::Number
 
class  dart::Integer
 
class  dart::Smi
 
class  dart::SmiTraits
 
class  dart::Mint
 
class  dart::Double
 
class  dart::Symbol
 
class  dart::String
 
class  dart::String::CodePointIterator
 
class  dart::StringHasher
 
class  dart::OneByteString
 
struct  dart::OneByteString::ArrayTraits
 
class  dart::TwoByteString
 
struct  dart::TwoByteString::ArrayTraits
 
class  dart::Bool
 
class  dart::Array
 
struct  dart::Array::ArrayTraits
 
class  dart::ImmutableArray
 
class  dart::GrowableObjectArray
 
class  dart::Float32x4
 
class  dart::Int32x4
 
class  dart::Float64x2
 
class  dart::RecordShape
 
class  dart::RecordType
 
class  dart::Record
 
struct  dart::Record::ArrayTraits
 
class  dart::PointerBase
 
class  dart::TypedDataBase
 
class  dart::TypedData
 
class  dart::ExternalTypedData
 
class  dart::TypedDataView
 
class  dart::ByteBuffer
 
class  dart::Pointer
 
class  dart::DynamicLibrary
 
class  dart::LinkedHashBase
 
class  dart::ImmutableLinkedHashBase
 
class  dart::Map
 
class  dart::Map::Iterator
 
class  dart::ConstMap
 
class  dart::Set
 
class  dart::Set::Iterator
 
class  dart::ConstSet
 
class  dart::Closure
 
class  dart::Capability
 
class  dart::ReceivePort
 
class  dart::SendPort
 
class  dart::TransferableTypedDataPeer
 
class  dart::TransferableTypedData
 
class  dart::StackTrace
 
class  dart::SuspendState
 
class  dart::RegExpFlags
 
class  dart::RegExp
 
class  dart::RegExp::TypeBits
 
class  dart::RegExp::GlobalBit
 
class  dart::RegExp::IgnoreCaseBit
 
class  dart::RegExp::MultiLineBit
 
class  dart::RegExp::UnicodeBit
 
class  dart::RegExp::DotAllBit
 
class  dart::RegExp::FlagsBits
 
class  dart::WeakProperty
 
class  dart::WeakReference
 
class  dart::FinalizerEntry
 
class  dart::FinalizerBase
 
class  dart::Finalizer
 
class  dart::NativeFinalizer
 
class  dart::MirrorReference
 
class  dart::UserTag
 
class  dart::FutureOr
 
class  dart::ArrayOfTuplesView< EnumType, TupleT, kStartOffset >
 
class  dart::ArrayOfTuplesView< EnumType, TupleT, kStartOffset >::TupleView
 
class  dart::ArrayOfTuplesView< EnumType, TupleT, kStartOffset >::Iterator
 

Namespaces

namespace  dart
 
namespace  dart::compiler
 
namespace  dart::kernel
 

Macros

#define DEFINE_FORWARD_DECLARATION(clazz)   class clazz;
 
#define REUSABLE_FORWARD_DECLARATION(name)   class Reusable##name##HandleScope;
 
#define CHECK_HANDLE()
 
#define ALLSTATIC_CONTAINS_COMPRESSED_IMPLEMENTATION(object, handle)
 
#define BASE_OBJECT_IMPLEMENTATION(object, super)
 
#define OBJECT_SERVICE_SUPPORT(object)
 
#define SNAPSHOT_SUPPORT(object)
 
#define OBJECT_IMPLEMENTATION(object, super)
 
#define HEAP_OBJECT_IMPLEMENTATION(object, super)
 
#define FINAL_HEAP_OBJECT_IMPLEMENTATION_HELPER(object, rettype, super)
 
#define FINAL_HEAP_OBJECT_IMPLEMENTATION(object, super)    FINAL_HEAP_OBJECT_IMPLEMENTATION_HELPER(object, object, super)
 
#define MINT_OBJECT_IMPLEMENTATION(object, rettype, super)    FINAL_HEAP_OBJECT_IMPLEMENTATION_HELPER(object, rettype, super)
 
#define DEFINE_CLASS_TESTER(clazz)
 
#define SHARED_READONLY_HANDLES_LIST(V)
 
#define DEFINE_SHARED_READONLY_HANDLE_GETTER(Type, name)
 
#define STORE_NON_POINTER_ILLEGAL_TYPE(type)
 
#define DECLARE_SHARED_READONLY_HANDLE(Type, name)   static Type* name##_;
 
#define REUSABLE_FRIEND_DECLARATION(name)    friend class Reusable##name##HandleScope;
 
#define PRECOMPILER_WSR_FIELD_DECLARATION(Type, Name)
 
#define DEFINE_NON_POINTER_FIELD_ACCESSORS(type, name)
 
#define DEOPT_REASONS(V)
 
#define DEFINE_ENUM_LIST(name)   kDeopt##name,
 
#define FOR_EACH_REBIND_RULE(V)
 
#define REBIND_ENUM_DEF(name)   k##name,
 
#define DEFINE_GETTERS_AND_SETTERS(return_type, type, name)
 
#define STATE_BITS_LIST(V)
 
#define DECLARE_FLAG_POS(Name)   k##Name##Pos,
 
#define DEFINE_FLAG_BIT(Name)    class Name##Bit : public BitField<uint8_t, bool, k##Name##Pos, 1> {};
 
#define DEFINE_FLAG_ACCESSORS(Name)
 
#define FOR_EACH_FUNCTION_KIND_BIT(V)
 
#define FOR_EACH_FUNCTION_VOLATILE_KIND_BIT(V)   V(Inlinable, is_inlinable)
 
#define DEFINE_ACCESSORS(name, accessor_name)
 
#define DEFINE_ACCESSORS(name, accessor_name)
 
#define DECLARE_BIT(name, _)   k##name##Bit,
 
#define ASSERT_FUNCTION_KIND_IN_RANGE(Name)    COMPILE_ASSERT(UntaggedFunction::k##Name < (1 << kKindTagSize));
 
#define DEFINE_BIT(name, _)    class name##Bit : public BitField<uint32_t, bool, k##name##Bit, 1> {};
 
#define INSTRUCTIONS_FLAGS_LIST(V)
 
#define DEFINE_INSTRUCTIONS_FLAG(Name)   k##Name##Index,
 
#define DEFINE_INSTRUCTIONS_FLAG_HANDLING(Name)
 
#define DEFINE_INSTRUCTIONS_FLAG_HANDLING(Name)
 
#define DECLARE_FLAG_ACCESSORS(Name)
 
#define TYPED_GETTER_SETTER(name, type)
 
#define TYPED_GETTER_SETTER(name, type)
 

Typedefs

typedef ZoneGrowableHandlePtrArray< const String > dart::URIs
 
using dart::StaticCallsTable = ArrayOfTuplesView< Code::SCallTableEntry, std::tuple< Smi, Object, Function > >
 
using dart::StaticCallsTableEntry = StaticCallsTable::TupleView
 
using dart::SubtypeTestCacheTable = ArrayOfTuplesView< SubtypeTestCache::Entries, std::tuple< Object, TypeArguments, TypeArguments, TypeArguments, TypeArguments, TypeArguments, AbstractType, Bool > >
 
using dart::MegamorphicCacheEntries = ArrayOfTuplesView< MegamorphicCache::EntryType, std::tuple< Smi, Object > >
 
using dart::InstantiationsCacheTable = ArrayOfTuplesView< TypeArguments::Cache::Entry, std::tuple< Object, TypeArguments, TypeArguments >, TypeArguments::Cache::kHeaderSize >
 

Enumerations

enum class  dart::Nullability : uint8_t { dart::kNullable = 0 , dart::kNonNullable = 1 }
 
enum class  dart::TypeEquality { dart::kCanonical = 0 , dart::kSyntactical = 1 , dart::kInSubtypeTest = 2 }
 
enum class  dart::NNBDCompiledMode { dart::kStrong = 0 , dart::kWeak = 1 , dart::kAgnostic = 2 , dart::kInvalid = 3 }
 
enum  dart::Genericity { dart::kAny , dart::kCurrentClass , dart::kFunctions }
 
enum  { dart::kNoneFree = 0 , dart::kCurrentAndEnclosingFree = kMaxInt32 - 1 , dart::kAllFree = kMaxInt32 }
 
enum class  dart::FfiCallbackKind : uint8_t { dart::kIsolateLocalStaticCallback , dart::kIsolateLocalClosureCallback , dart::kAsyncCallback }
 
enum class  dart::EntryPointPragma {
  dart::kAlways , dart::kNever , dart::kGetterOnly , dart::kSetterOnly ,
  dart::kCallOnly
}
 

Functions

void dart::DFLRT_ExitSafepoint (NativeArguments __unusable_)
 
void dart::DumpTypeTable (Isolate *isolate)
 
void dart::DumpTypeParameterTable (Isolate *isolate)
 
void dart::DumpTypeArgumentsTable (Isolate *isolate)
 
bool dart::FindPragmaInMetadata (Thread *T, const Object &metadata_obj, const String &pragma_name, bool multiple, Object *options)
 
EntryPointPragma dart::FindEntryPointPragma (IsolateGroup *IG, const Array &metadata, Field *reusable_field_handle, Object *pragma)
 
DART_WARN_UNUSED_RESULT ErrorPtr dart::EntryPointFieldInvocationError (const String &getter_name)
 
DART_WARN_UNUSED_RESULT ErrorPtr dart::EntryPointMemberInvocationError (const Object &member)
 

Variables

static constexpr intptr_t dart::kNullIdentityHash = 2011
 
static constexpr intptr_t dart::kTrueIdentityHash = 1231
 
static constexpr intptr_t dart::kFalseIdentityHash = 1237
 

Macro Definition Documentation

◆ ALLSTATIC_CONTAINS_COMPRESSED_IMPLEMENTATION

#define ALLSTATIC_CONTAINS_COMPRESSED_IMPLEMENTATION (   object,
  handle 
)
Value:
public: /* NOLINT */ \
using UntaggedObjectType = dart::Untagged##object; \
using ObjectPtrType = dart::object##Ptr; \
#object "Ptr must be a subtype of " #handle "Ptr"); \
static_assert(dart::handle::ContainsCompressedPointers() == \
UntaggedObjectType::kContainsCompressedPointers, \
"Pointer compression in Untagged" #object \
" must match pointer compression in Untagged" #handle); \
static constexpr bool ContainsCompressedPointers() { \
return UntaggedObjectType::kContainsCompressedPointers; \
} \
\
private: /* NOLINT */
uint8_t value
static ObjectPtr Ptr(ObjectPtr obj)

Definition at line 90 of file object.h.

◆ ASSERT_FUNCTION_KIND_IN_RANGE

#define ASSERT_FUNCTION_KIND_IN_RANGE (   Name)     COMPILE_ASSERT(UntaggedFunction::k##Name < (1 << kKindTagSize));

Definition at line 4238 of file object.h.

◆ BASE_OBJECT_IMPLEMENTATION

#define BASE_OBJECT_IMPLEMENTATION (   object,
  super 
)

Definition at line 106 of file object.h.

◆ CHECK_HANDLE

#define CHECK_HANDLE ( )

Definition at line 84 of file object.h.

◆ DECLARE_BIT

#define DECLARE_BIT (   name,
 
)    k##name##Bit,

Definition at line 4225 of file object.h.

◆ DECLARE_FLAG_ACCESSORS

#define DECLARE_FLAG_ACCESSORS (   Name)
Value:
bool Is##Name##At(intptr_t scope_index) const; \
void SetIs##Name##At(intptr_t scope_index, bool value) const;
ImplicitString Name
Definition: DMSrcSink.h:38

Definition at line 7502 of file object.h.

◆ DECLARE_FLAG_POS

#define DECLARE_FLAG_POS (   Name)    k##Name##Pos,

Definition at line 4098 of file object.h.

◆ DECLARE_SHARED_READONLY_HANDLE

#define DECLARE_SHARED_READONLY_HANDLE (   Type,
  name 
)    static Type* name##_;

Definition at line 1013 of file object.h.

◆ DEFINE_ACCESSORS [1/2]

#define DEFINE_ACCESSORS (   name,
  accessor_name 
)
Value:
void set_##accessor_name(bool value) const { \
untag()->kind_tag_.UpdateUnsynchronized<name##Bit>(value); \
} \
bool accessor_name() const { return untag()->kind_tag_.Read<name##Bit>(); }
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)
Definition: raw_object.cc:558
DEF_SWITCHES_START aot vmservice shared library name
Definition: switches.h:32

Definition at line 4189 of file object.h.

◆ DEFINE_ACCESSORS [2/2]

#define DEFINE_ACCESSORS (   name,
  accessor_name 
)
Value:
void set_##accessor_name(bool value) const { \
untag()->kind_tag_.UpdateBool<name##Bit>(value); \
} \
bool accessor_name() const { return untag()->kind_tag_.Read<name##Bit>(); }

Definition at line 4189 of file object.h.

◆ DEFINE_BIT

#define DEFINE_BIT (   name,
 
)     class name##Bit : public BitField<uint32_t, bool, k##name##Bit, 1> {};

Definition at line 4257 of file object.h.

◆ DEFINE_CLASS_TESTER

#define DEFINE_CLASS_TESTER (   clazz)
Value:
virtual bool Is##clazz() const { return false; } \
static bool Is##clazz##NoHandle(ObjectPtr ptr) { \
/* Use a stack handle to make RawCast safe in contexts where handles */ \
/* should not be allocated, such as GC or runtime transitions. Not */ \
/* using Object's constructor to avoid Is##clazz being de-virtualized. */ \
char buf[sizeof(Object)]; \
Object* obj = reinterpret_cast<Object*>(&buf); \
initializeHandle(obj, ptr); \
return obj->IsNull() || obj->Is##clazz(); \
}

Definition at line 349 of file object.h.

◆ DEFINE_ENUM_LIST

#define DEFINE_ENUM_LIST (   name)    kDeopt##name,

Definition at line 2513 of file object.h.

◆ DEFINE_FLAG_ACCESSORS

#define DEFINE_FLAG_ACCESSORS (   Name)
Value:
void Set##Name(bool value) const { \
set_state_bits(Name##Bit::update(value, state_bits())); \
} \
bool Name() const { return Name##Bit::decode(state_bits()); }
static DecodeResult decode(std::string path)
Definition: png_codec.cpp:124

Definition at line 4107 of file object.h.

◆ DEFINE_FLAG_BIT

#define DEFINE_FLAG_BIT (   Name)     class Name##Bit : public BitField<uint8_t, bool, k##Name##Pos, 1> {};

Definition at line 4102 of file object.h.

◆ DEFINE_FORWARD_DECLARATION

#define DEFINE_FORWARD_DECLARATION (   clazz)    class clazz;

Definition at line 54 of file object.h.

◆ DEFINE_GETTERS_AND_SETTERS

#define DEFINE_GETTERS_AND_SETTERS (   return_type,
  type,
  name 
)
Value:
static intptr_t name##_offset() { \
return OFFSET_OF(UntaggedFunction, name##_); \
} \
return_type name() const { \
return LoadNonPointer<type, std::memory_order_relaxed>(&untag()->name##_); \
} \
\
void set_##name(type value) const { \
StoreNonPointer<type, type, std::memory_order_relaxed>(&untag()->name##_, \
value); \
}
GLenum type
#define OFFSET_OF(type, field)
Definition: globals.h:138

Definition at line 3532 of file object.h.

◆ DEFINE_INSTRUCTIONS_FLAG

#define DEFINE_INSTRUCTIONS_FLAG (   Name)    k##Name##Index,

Definition at line 5720 of file object.h.

◆ DEFINE_INSTRUCTIONS_FLAG_HANDLING [1/2]

#define DEFINE_INSTRUCTIONS_FLAG_HANDLING (   Name)
Value:
class Name##Bit \
: public BitField<uint32_t, bool, kFlagsPos + k##Name##Index, 1> {}; \
bool Name() const { return Name##Bit::decode(untag()->size_and_flags_); } \
static bool Name(const InstructionsPtr instr) { \
return Name##Bit::decode(instr->untag()->size_and_flags_); \
}

Definition at line 5893 of file object.h.

◆ DEFINE_INSTRUCTIONS_FLAG_HANDLING [2/2]

#define DEFINE_INSTRUCTIONS_FLAG_HANDLING (   Name)
Value:
void Set##Name(bool value) const { \
StoreNonPointer(&untag()->size_and_flags_, \
Name##Bit::update(value, untag()->size_and_flags_)); \
}

Definition at line 5893 of file object.h.

◆ DEFINE_NON_POINTER_FIELD_ACCESSORS

#define DEFINE_NON_POINTER_FIELD_ACCESSORS (   type,
  name 
)
Value:
type name() const { return untag()->name##_; } \
void set_##name(type value) const { \
StoreNonPointer(&untag()->name##_, value); \
} \
static intptr_t name##_offset() { \
return OFFSET_OF(UntaggedSingleTargetCache, name##_); \
}

Definition at line 2321 of file object.h.

◆ DEFINE_SHARED_READONLY_HANDLE_GETTER

#define DEFINE_SHARED_READONLY_HANDLE_GETTER (   Type,
  name 
)
Value:
static const Type& name() { \
ASSERT(name##_ != nullptr); \
return *name##_; \
}

Definition at line 503 of file object.h.

◆ DEOPT_REASONS

#define DEOPT_REASONS (   V)
Value:
V(BinarySmiOp) \
V(BinaryInt64Op) \
V(DoubleToSmi) \
V(CheckSmi) \
V(CheckClass) \
V(Unknown) \
V(PolymorphicInstanceCallTestFail) \
V(UnaryInt64Op) \
V(BinaryDoubleOp) \
V(UnaryOp) \
V(UnboxInteger) \
V(Unbox) \
V(CheckArrayBound) \
V(AtCall) \
V(GuardField) \
V(TestCids) \
V(NumReasons)
#define V(name)
Definition: raw_object.h:125

Definition at line 2493 of file object.h.

◆ FINAL_HEAP_OBJECT_IMPLEMENTATION

#define FINAL_HEAP_OBJECT_IMPLEMENTATION (   object,
  super 
)     FINAL_HEAP_OBJECT_IMPLEMENTATION_HELPER(object, object, super)

Definition at line 300 of file object.h.

◆ FINAL_HEAP_OBJECT_IMPLEMENTATION_HELPER

#define FINAL_HEAP_OBJECT_IMPLEMENTATION_HELPER (   object,
  rettype,
  super 
)
Value:
public: /* NOLINT */ \
void operator=(object##Ptr value) { \
ptr_ = value; \
CHECK_HANDLE(); \
} \
void operator^=(ObjectPtr value) { \
ptr_ = value; \
CHECK_HANDLE(); \
} \
\
private: /* NOLINT */ \
object() : super() {} \
BASE_OBJECT_IMPLEMENTATION(object, super) \
OBJECT_SERVICE_SUPPORT(object) \
Untagged##object* untag() const { \
ASSERT(ptr() != null()); \
return const_cast<Untagged##object*>(ptr()->untag()); \
} \
static intptr_t NextFieldOffset() { \
return -kWordSize; \
} \
SNAPSHOT_SUPPORT(rettype) \
friend class Object; \
friend class StackFrame; \
friend class Thread; \
friend void DFLRT_ExitSafepoint(NativeArguments __unusable_);
std::enable_if_t< sknonstd::is_bitmask_enum< E >::value, E & > constexpr operator^=(E &l, E r)
Definition: SkBitmaskEnum.h:50
constexpr intptr_t kWordSize
Definition: globals.h:509
void DFLRT_ExitSafepoint(NativeArguments __unusable_)

Definition at line 272 of file object.h.

◆ FOR_EACH_FUNCTION_KIND_BIT

#define FOR_EACH_FUNCTION_KIND_BIT (   V)
Value:
V(Static, is_static) \
V(Const, is_const) \
V(Abstract, is_abstract) \
V(Reflectable, is_reflectable) \
V(Visible, is_visible) \
V(Debuggable, is_debuggable) \
V(Intrinsic, is_intrinsic) \
V(Native, is_native) \
V(External, is_external) \
V(PolymorphicTarget, is_polymorphic_target) \
V(HasPragma, has_pragma) \
V(IsSynthetic, is_synthetic) \
V(IsExtensionMember, is_extension_member) \
V(IsExtensionTypeMember, is_extension_type_member) \
V(IsRedirectingFactory, is_redirecting_factory)
static bool HasPragma(const Object &declaration)
Definition: object.cc:13713

Definition at line 4157 of file object.h.

◆ FOR_EACH_FUNCTION_VOLATILE_KIND_BIT

#define FOR_EACH_FUNCTION_VOLATILE_KIND_BIT (   V)    V(Inlinable, is_inlinable)

Definition at line 4175 of file object.h.

◆ FOR_EACH_REBIND_RULE

#define FOR_EACH_REBIND_RULE (   V)
Value:
V(Instance) \
V(NoRebind) \
V(NSMDispatch) \
V(Optimized) \
V(Static) \
V(Super)

Definition at line 2537 of file object.h.

◆ HEAP_OBJECT_IMPLEMENTATION

#define HEAP_OBJECT_IMPLEMENTATION (   object,
  super 
)
Value:
OBJECT_IMPLEMENTATION(object, super); \
Untagged##object* untag() const { \
ASSERT(ptr() != null()); \
return const_cast<Untagged##object*>(ptr()->untag()); \
} \
SNAPSHOT_SUPPORT(object) \
friend class StackFrame; \
friend class Thread; \
friend void DFLRT_ExitSafepoint(NativeArguments __unusable_);
#define OBJECT_IMPLEMENTATION(object, super)
Definition: object.h:242

Definition at line 260 of file object.h.

◆ INSTRUCTIONS_FLAGS_LIST

#define INSTRUCTIONS_FLAGS_LIST (   V)
Value:
V(HasMonomorphicEntry) \
V(ShouldBeAligned)

Definition at line 5715 of file object.h.

◆ MINT_OBJECT_IMPLEMENTATION

#define MINT_OBJECT_IMPLEMENTATION (   object,
  rettype,
  super 
)     FINAL_HEAP_OBJECT_IMPLEMENTATION_HELPER(object, rettype, super)

Definition at line 303 of file object.h.

◆ OBJECT_IMPLEMENTATION

#define OBJECT_IMPLEMENTATION (   object,
  super 
)
Value:
public: /* NOLINT */ \
DART_NOINLINE void operator=(object##Ptr value) { \
initializeHandle(this, value); \
} \
DART_NOINLINE void operator^=(ObjectPtr value) { \
initializeHandle(this, value); \
ASSERT(IsNull() || Is##object()); \
} \
\
protected: /* NOLINT */ \
object() : super() {} \
BASE_OBJECT_IMPLEMENTATION(object, super) \
OBJECT_SERVICE_SUPPORT(object) \
friend class Object;
DART_EXPORT bool IsNull(Dart_Handle object)

Definition at line 242 of file object.h.

◆ OBJECT_SERVICE_SUPPORT

#define OBJECT_SERVICE_SUPPORT (   object)
Value:
protected: /* NOLINT */ \
/* Object is printed as JSON into stream. If ref is true only a header */ \
/* with an object id is printed. If ref is false the object is fully */ \
/* printed. */ \
virtual void PrintJSONImpl(JSONStream* stream, bool ref) const; \
/* Prints JSON objects that describe the implementation-level fields of */ \
/* the current Object to |jsarr_fields|. */ \
virtual void PrintImplementationFieldsImpl(const JSONArray& jsarr_fields) \
const; \
virtual const char* JSONType() const { \
return "" #object; \
}

Definition at line 221 of file object.h.

◆ PRECOMPILER_WSR_FIELD_DECLARATION

#define PRECOMPILER_WSR_FIELD_DECLARATION (   Type,
  Name 
)
Value:
Type##Ptr Name() const { \
return untag()->Name(); \
} \
void set_##Name(const Type& value) const;

Definition at line 1055 of file object.h.

◆ REBIND_ENUM_DEF

#define REBIND_ENUM_DEF (   name)    k##name,

Definition at line 2546 of file object.h.

◆ REUSABLE_FORWARD_DECLARATION

#define REUSABLE_FORWARD_DECLARATION (   name)    class Reusable##name##HandleScope;

Definition at line 74 of file object.h.

◆ REUSABLE_FRIEND_DECLARATION

#define REUSABLE_FRIEND_DECLARATION (   name)     friend class Reusable##name##HandleScope;

Definition at line 1027 of file object.h.

◆ SHARED_READONLY_HANDLES_LIST

#define SHARED_READONLY_HANDLES_LIST (   V)

Definition at line 457 of file object.h.

◆ SNAPSHOT_SUPPORT

#define SNAPSHOT_SUPPORT (   object)
Value:
friend class object##MessageSerializationCluster; \
friend class object##MessageDeserializationCluster;

Definition at line 238 of file object.h.

◆ STATE_BITS_LIST

#define STATE_BITS_LIST (   V)
Value:
V(WasCompiled) \
V(WasExecutedBit) \
V(ProhibitsInstructionHoisting) \
V(ProhibitsBoundsCheckGeneralization) \
V(IsDynamicallyOverridden)

Definition at line 4090 of file object.h.

◆ STORE_NON_POINTER_ILLEGAL_TYPE

#define STORE_NON_POINTER_ILLEGAL_TYPE (   type)
Value:
template <typename ValueType> \
void StoreNonPointer(type##Ptr const* addr, ValueType value) const { \
UnimplementedMethod(); \
} \
type##Ptr* UnsafeMutableNonPointer(type##Ptr const* addr) const { \
UnimplementedMethod(); \
return nullptr; \
}

Definition at line 849 of file object.h.

◆ TYPED_GETTER_SETTER [1/2]

#define TYPED_GETTER_SETTER (   name,
  type 
)
Value:
type Get##name(intptr_t byte_offset) const { \
ASSERT(static_cast<uintptr_t>(byte_offset) <= \
static_cast<uintptr_t>(LengthInBytes()) - sizeof(type)); \
return LoadUnaligned( \
reinterpret_cast<type*>(untag()->data_ + byte_offset)); \
} \
void Set##name(intptr_t byte_offset, type value) const { \
ASSERT(static_cast<uintptr_t>(byte_offset) <= \
static_cast<uintptr_t>(LengthInBytes()) - sizeof(type)); \
StoreUnaligned(reinterpret_cast<type*>(untag()->data_ + byte_offset), \
value); \
}
const GrXPFactory * Get(SkBlendMode mode)
static T LoadUnaligned(const T *ptr)
Definition: unaligned.h:14

Definition at line 11639 of file object.h.

◆ TYPED_GETTER_SETTER [2/2]

#define TYPED_GETTER_SETTER (   name,
  type 
)
Value:
type Get##name(intptr_t byte_offset) const { \
ASSERT(static_cast<uintptr_t>(byte_offset) <= \
static_cast<uintptr_t>(LengthInBytes()) - sizeof(type)); \
return LoadUnaligned( \
reinterpret_cast<const type*>(untag()->data() + byte_offset)); \
} \
void Set##name(intptr_t byte_offset, type value) const { \
ASSERT(static_cast<uintptr_t>(byte_offset) <= \
static_cast<uintptr_t>(LengthInBytes()) - sizeof(type)); \
return StoreUnaligned( \
reinterpret_cast<type*>(untag()->data() + byte_offset), value); \
}
static void StoreUnaligned(T *ptr, T value)
Definition: unaligned.h:22
std::shared_ptr< const fml::Mapping > data
Definition: texture_gles.cc:63

Definition at line 11639 of file object.h.