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

#include <object.h>

Inheritance diagram for dart::TypeParameters:
dart::Object

Public Member Functions

intptr_t Length () const
 
StringPtr NameAt (intptr_t index) const
 
void SetNameAt (intptr_t index, const String &value) const
 
AbstractTypePtr BoundAt (intptr_t index) const
 
void SetBoundAt (intptr_t index, const AbstractType &value) const
 
bool AllDynamicBounds () const
 
AbstractTypePtr DefaultAt (intptr_t index) const
 
void SetDefaultAt (intptr_t index, const AbstractType &value) const
 
bool AllDynamicDefaults () const
 
bool IsGenericCovariantImplAt (intptr_t index) const
 
void SetIsGenericCovariantImplAt (intptr_t index, bool value) const
 
 COMPILE_ASSERT (kFlagsPerSmi< kSmiBits)
 
void Print (Thread *thread, Zone *zone, bool are_class_type_parameters, intptr_t base, NameVisibility name_visibility, BaseTextBuffer *printer) const
 
- Public Member Functions inherited from dart::Object
virtual ~Object ()
 
ObjectPtr ptr () const
 
void operator= (ObjectPtr value)
 
bool IsCanonical () const
 
void SetCanonical () const
 
void ClearCanonical () const
 
bool IsImmutable () const
 
void SetImmutable () const
 
void ClearImmutable () const
 
intptr_t GetClassId () const
 
ClassPtr clazz () const
 
 CLASS_LIST_FOR_HANDLES (DEFINE_CLASS_TESTER)
 
bool IsNull () const
 
virtual const char * ToCString () const
 
void PrintJSON (JSONStream *stream, bool ref=true) const
 
virtual void PrintJSONImpl (JSONStream *stream, bool ref) const
 
void PrintImplementationFields (JSONStream *stream) const
 
virtual void PrintImplementationFieldsImpl (const JSONArray &jsarr_fields) const
 
virtual const char * JSONType () const
 
virtual StringPtr DictionaryName () const
 
bool IsNew () const
 
bool IsOld () const
 
bool InVMIsolateHeap () const
 
void Print () const
 

Static Public Member Functions

static intptr_t names_offset ()
 
static intptr_t flags_offset ()
 
static intptr_t bounds_offset ()
 
static intptr_t defaults_offset ()
 
static intptr_t InstanceSize ()
 
static TypeParametersPtr New (Heap::Space space=Heap::kOld)
 
static TypeParametersPtr New (intptr_t count, Heap::Space space=Heap::kOld)
 
- Static Public Member Functions inherited from dart::Object
static ObjectPtr RawCast (ObjectPtr obj)
 
static constexpr bool ContainsCompressedPointers ()
 
static intptr_t tags_offset ()
 
static ObjectHandle ()
 
static ObjectHandle (Zone *zone)
 
static ObjectHandle (ObjectPtr ptr)
 
static ObjectHandle (Zone *zone, ObjectPtr ptr)
 
static ObjectZoneHandle ()
 
static ObjectZoneHandle (Zone *zone)
 
static ObjectZoneHandle (ObjectPtr ptr)
 
static ObjectZoneHandle (Zone *zone, ObjectPtr ptr)
 
static ObjectReadOnlyHandle ()
 
static ObjectPtr null ()
 
static void set_vm_isolate_snapshot_object_table (const Array &table)
 
static ClassPtr class_class ()
 
static ClassPtr dynamic_class ()
 
static ClassPtr void_class ()
 
static ClassPtr type_parameters_class ()
 
static ClassPtr type_arguments_class ()
 
static ClassPtr patch_class_class ()
 
static ClassPtr function_class ()
 
static ClassPtr closure_data_class ()
 
static ClassPtr ffi_trampoline_data_class ()
 
static ClassPtr field_class ()
 
static ClassPtr script_class ()
 
static ClassPtr library_class ()
 
static ClassPtr namespace_class ()
 
static ClassPtr kernel_program_info_class ()
 
static ClassPtr code_class ()
 
static ClassPtr instructions_class ()
 
static ClassPtr instructions_section_class ()
 
static ClassPtr instructions_table_class ()
 
static ClassPtr object_pool_class ()
 
static ClassPtr pc_descriptors_class ()
 
static ClassPtr code_source_map_class ()
 
static ClassPtr compressed_stackmaps_class ()
 
static ClassPtr var_descriptors_class ()
 
static ClassPtr exception_handlers_class ()
 
static ClassPtr context_class ()
 
static ClassPtr context_scope_class ()
 
static ClassPtr sentinel_class ()
 
static ClassPtr api_error_class ()
 
static ClassPtr language_error_class ()
 
static ClassPtr unhandled_exception_class ()
 
static ClassPtr unwind_error_class ()
 
static ClassPtr singletargetcache_class ()
 
static ClassPtr unlinkedcall_class ()
 
static ClassPtr monomorphicsmiablecall_class ()
 
static ClassPtr icdata_class ()
 
static ClassPtr megamorphic_cache_class ()
 
static ClassPtr subtypetestcache_class ()
 
static ClassPtr loadingunit_class ()
 
static ClassPtr weak_serialization_reference_class ()
 
static ClassPtr weak_array_class ()
 
static void InitNullAndBool (IsolateGroup *isolate_group)
 
static void Init (IsolateGroup *isolate_group)
 
static void InitVtables ()
 
static void FinishInit (IsolateGroup *isolate_group)
 
static void FinalizeVMIsolate (IsolateGroup *isolate_group)
 
static void FinalizeReadOnlyObject (ObjectPtr object)
 
static void Cleanup ()
 
static ErrorPtr Init (IsolateGroup *isolate_group, const uint8_t *kernel_buffer, intptr_t kernel_buffer_size)
 
static void MakeUnusedSpaceTraversable (const Object &obj, intptr_t original_size, intptr_t used_size)
 
static intptr_t InstanceSize ()
 
template<class FakeObject >
static void VerifyBuiltinVtable (intptr_t cid)
 
static void VerifyBuiltinVtables ()
 
static bool ShouldHaveImmutabilityBitSet (classid_t class_id)
 

Static Public Attributes

static constexpr intptr_t kFlagsPerSmiShift = kBitsPerWordLog2 - 1
 
static constexpr intptr_t kFlagsPerSmi = 1LL << kFlagsPerSmiShift
 
static constexpr intptr_t kFlagsPerSmiMask = kFlagsPerSmi - 1
 
- Static Public Attributes inherited from dart::Object
static constexpr intptr_t kHashBits = 30
 
static const ClassId kClassId = kObjectCid
 

Friends

class Class
 
class ClassFinalizer
 
class FlowGraphSerializer
 
class FlowGraphDeserializer
 
class Function
 
class FunctionType
 
class Object
 
class Precompiler
 
class Type
 

Additional Inherited Members

- Public Types inherited from dart::Object
enum  NameVisibility { kInternalName = 0 , kScrubbedName , kUserVisibleName }
 
enum class  NameDisambiguation { kYes , kNo }
 
using UntaggedObjectType = UntaggedObject
 
using ObjectPtrType = ObjectPtr
 
- Protected Member Functions inherited from dart::Object
 Object ()
 
uword raw_value () const
 
void setPtr (ObjectPtr value, intptr_t default_cid)
 
void CheckHandle () const
 
cpp_vtable vtable () const
 
void set_vtable (cpp_vtable value)
 
bool Contains (uword addr) const
 
template<typename type , std::memory_order order = std::memory_order_relaxed>
type LoadPointer (type const *addr) const
 
template<typename type , std::memory_order order = std::memory_order_relaxed>
void StorePointer (type const *addr, type value) const
 
template<typename type , typename compressed_type , std::memory_order order = std::memory_order_relaxed>
void StoreCompressedPointer (compressed_type const *addr, type value) const
 
template<typename type >
void StorePointerUnaligned (type const *addr, type value, Thread *thread) const
 
void StoreSmi (SmiPtr const *addr, SmiPtr value) const
 
template<typename FieldType >
void StoreSimd128 (const FieldType *addr, simd128_value_t value) const
 
template<typename FieldType >
FieldType LoadNonPointer (const FieldType *addr) const
 
template<typename FieldType , std::memory_order order>
FieldType LoadNonPointer (const FieldType *addr) const
 
template<typename FieldType , typename ValueType >
void StoreNonPointer (const FieldType *addr, ValueType value) const
 
template<typename FieldType , typename ValueType , std::memory_order order>
void StoreNonPointer (const FieldType *addr, ValueType value) const
 
template<typename FieldType >
FieldType * UnsafeMutableNonPointer (const FieldType *addr) const
 
 CLASS_LIST (STORE_NON_POINTER_ILLEGAL_TYPE)
 
void UnimplementedMethod () const
 
void AddCommonObjectProperties (JSONObject *jsobj, const char *protocol_type, bool ref) const
 
- Static Protected Member Functions inherited from dart::Object
static DART_NOINLINE ObjectHandleImpl (Zone *zone, ObjectPtr ptr, intptr_t default_cid)
 
static DART_NOINLINE ObjectZoneHandleImpl (Zone *zone, ObjectPtr ptr, intptr_t default_cid)
 
static DART_NOINLINE ObjectReadOnlyHandleImpl (intptr_t cid)
 
static ObjectPtr Allocate (intptr_t cls_id, intptr_t size, Heap::Space space, bool compressed, uword ptr_field_start_offset, uword ptr_field_end_offset)
 
template<typename T >
static DART_FORCE_INLINE T::ObjectPtrType Allocate (Heap::Space space)
 
template<typename T >
static DART_FORCE_INLINE T::ObjectPtrType Allocate (Heap::Space space, intptr_t elements)
 
template<typename T >
static DART_FORCE_INLINE T::ObjectPtrType AllocateVariant (intptr_t class_id, Heap::Space space)
 
template<typename T >
static DART_FORCE_INLINE T::ObjectPtrType AllocateVariant (intptr_t class_id, Heap::Space space, intptr_t elements)
 
static constexpr intptr_t RoundedAllocationSize (intptr_t size)
 
static ObjectPtr Clone (const Object &orig, Heap::Space space, bool load_with_relaxed_atomics=false)
 
template<typename T >
static DART_FORCE_INLINE uword from_offset ()
 
template<typename T >
static DART_FORCE_INLINE uword to_offset (intptr_t length=0)
 
- Protected Attributes inherited from dart::Object
ObjectPtr ptr_
 

Detailed Description

Definition at line 8460 of file object.h.

Member Function Documentation

◆ AllDynamicBounds()

bool dart::TypeParameters::AllDynamicBounds ( ) const

Definition at line 6660 of file object.cc.

6660 {
6661 return bounds() == TypeArguments::null();
6662}
static ObjectPtr null()
Definition object.h:433

◆ AllDynamicDefaults()

bool dart::TypeParameters::AllDynamicDefaults ( ) const

Definition at line 6681 of file object.cc.

6681 {
6682 return defaults() == TypeArguments::null();
6683}

◆ BoundAt()

AbstractTypePtr dart::TypeParameters::BoundAt ( intptr_t  index) const

Definition at line 6648 of file object.cc.

6648 {
6649 const TypeArguments& upper_bounds = TypeArguments::Handle(bounds());
6650 return upper_bounds.IsNull() ? Type::DynamicType()
6651 : upper_bounds.TypeAt(index);
6652}
static Object & Handle()
Definition object.h:407
static TypePtr DynamicType()
Definition object.cc:21866

◆ bounds_offset()

static intptr_t dart::TypeParameters::bounds_offset ( )
inlinestatic

Definition at line 8474 of file object.h.

8474 {
8475 return OFFSET_OF(UntaggedTypeParameters, bounds_);
8476 }
#define OFFSET_OF(type, field)
Definition globals.h:138

◆ COMPILE_ASSERT()

dart::TypeParameters::COMPILE_ASSERT ( )

◆ DefaultAt()

AbstractTypePtr dart::TypeParameters::DefaultAt ( intptr_t  index) const

Definition at line 6669 of file object.cc.

6669 {
6670 const TypeArguments& default_type_args = TypeArguments::Handle(defaults());
6671 return default_type_args.IsNull() ? Type::DynamicType()
6672 : default_type_args.TypeAt(index);
6673}

◆ defaults_offset()

static intptr_t dart::TypeParameters::defaults_offset ( )
inlinestatic

Definition at line 8481 of file object.h.

8481 {
8482 return OFFSET_OF(UntaggedTypeParameters, defaults_);
8483 }

◆ flags_offset()

static intptr_t dart::TypeParameters::flags_offset ( )
inlinestatic

Definition at line 8470 of file object.h.

8470 {
8471 return OFFSET_OF(UntaggedTypeParameters, flags_);
8472 }

◆ InstanceSize()

static intptr_t dart::TypeParameters::InstanceSize ( )
inlinestatic

Definition at line 8511 of file object.h.

8511 {
8512 return RoundedAllocationSize(sizeof(UntaggedTypeParameters));
8513 }
static constexpr intptr_t RoundedAllocationSize(intptr_t size)
Definition object.h:758

◆ IsGenericCovariantImplAt()

bool dart::TypeParameters::IsGenericCovariantImplAt ( intptr_t  index) const

Definition at line 6707 of file object.cc.

6707 {
6708 if (untag()->flags() == Array::null()) return false;
6709 const intptr_t flag = Smi::Value(
6710 Smi::RawCast(Array::Handle(flags()).At(index >> kFlagsPerSmiShift)));
6711 return (flag >> (index & kFlagsPerSmiMask)) != 0;
6712}
static ObjectPtr RawCast(ObjectPtr obj)
Definition object.h:325
intptr_t Value() const
Definition object.h:9969
static constexpr intptr_t kFlagsPerSmiShift
Definition object.h:8496
static constexpr intptr_t kFlagsPerSmiMask
Definition object.h:8502
FlutterSemanticsFlag flag
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)

◆ Length()

intptr_t dart::TypeParameters::Length ( ) const

Definition at line 6619 of file object.cc.

6619 {
6620 if (IsNull() || untag()->names() == Array::null()) return 0;
6621 return Smi::Value(untag()->names()->untag()->length());
6622}
bool IsNull() const
Definition object.h:363
size_t length

◆ NameAt()

StringPtr dart::TypeParameters::NameAt ( intptr_t  index) const

Definition at line 6629 of file object.cc.

6629 {
6630 const Array& names_array = Array::Handle(names());
6631 return String::RawCast(names_array.At(index));
6632}

◆ names_offset()

static intptr_t dart::TypeParameters::names_offset ( )
inlinestatic

Definition at line 8464 of file object.h.

8464 {
8465 return OFFSET_OF(UntaggedTypeParameters, names_);
8466 }

◆ New() [1/2]

TypeParametersPtr dart::TypeParameters::New ( Heap::Space  space = Heap::kOld)
static

Definition at line 6778 of file object.cc.

6778 {
6780 return Object::Allocate<TypeParameters>(space);
6781}
static ClassPtr type_parameters_class()
Definition object.h:516
#define ASSERT(E)

◆ New() [2/2]

TypeParametersPtr dart::TypeParameters::New ( intptr_t  count,
Heap::Space  space = Heap::kOld 
)
static

Definition at line 6783 of file object.cc.

6783 {
6784 const TypeParameters& result =
6786 // Create an [ Array ] of [ String ] objects to represent the names.
6787 // Create a [ TypeArguments ] vector representing the bounds.
6788 // Create a [ TypeArguments ] vector representing the defaults.
6789 // Create an [ Array ] of [ Smi] objects to represent the flags.
6790 const Array& names_array = Array::Handle(Array::New(count, space));
6791 result.set_names(names_array);
6792 TypeArguments& type_args = TypeArguments::Handle();
6793 type_args = TypeArguments::New(count, Heap::kNew); // Will get canonicalized.
6794 result.set_bounds(type_args);
6795 type_args = TypeArguments::New(count, Heap::kNew); // Will get canonicalized.
6796 result.set_defaults(type_args);
6797 result.AllocateFlags(space); // Will get optimized.
6798 return result.ptr();
6799}
int count
static ArrayPtr New(intptr_t len, Heap::Space space=Heap::kNew)
Definition object.h:10933
@ kNew
Definition heap.h:38
static TypeArgumentsPtr New(intptr_t len, Heap::Space space=Heap::kOld)
Definition object.cc:7733
static TypeParametersPtr New(Heap::Space space=Heap::kOld)
Definition object.cc:6778
GAsyncResult * result

◆ Print()

void dart::TypeParameters::Print ( Thread thread,
Zone zone,
bool  are_class_type_parameters,
intptr_t  base,
NameVisibility  name_visibility,
BaseTextBuffer printer 
) const

Definition at line 6726 of file object.cc.

6731 {
6732 String& name = String::Handle(zone);
6733 AbstractType& type = AbstractType::Handle(zone);
6734 const intptr_t num_type_params = Length();
6735 for (intptr_t i = 0; i < num_type_params; i++) {
6736 if (are_class_type_parameters) {
6737 name = NameAt(i);
6738 printer->AddString(name.ToCString());
6739 } else {
6740 printer->AddString(TypeParameter::CanonicalNameCString(
6741 are_class_type_parameters, base, base + i));
6742 }
6743 if (FLAG_show_internal_names || !AllDynamicBounds()) {
6744 type = BoundAt(i);
6745 // Do not print default bound.
6746 if (!type.IsNull() && (FLAG_show_internal_names || !type.IsObjectType() ||
6747 type.IsNonNullable())) {
6748 printer->AddString(" extends ");
6749 type.PrintName(name_visibility, printer);
6750 if (FLAG_show_internal_names && !AllDynamicDefaults()) {
6751 type = DefaultAt(i);
6752 if (!type.IsNull() &&
6753 (FLAG_show_internal_names || !type.IsDynamicType())) {
6754 printer->AddString(" defaults to ");
6755 type.PrintName(name_visibility, printer);
6756 }
6757 }
6758 }
6759 }
6760 if (i != num_type_params - 1) {
6761 printer->AddString(", ");
6762 }
6763 }
6764}
const char * CanonicalNameCString() const
Definition object.h:9848
intptr_t Length() const
Definition object.cc:6619
StringPtr NameAt(intptr_t index) const
Definition object.cc:6629
AbstractTypePtr DefaultAt(intptr_t index) const
Definition object.cc:6669
bool AllDynamicDefaults() const
Definition object.cc:6681
bool AllDynamicBounds() const
Definition object.cc:6660
AbstractTypePtr BoundAt(intptr_t index) const
Definition object.cc:6648
const char *const name

◆ SetBoundAt()

void dart::TypeParameters::SetBoundAt ( intptr_t  index,
const AbstractType value 
) const

Definition at line 6654 of file object.cc.

6655 {
6656 const TypeArguments& upper_bounds = TypeArguments::Handle(bounds());
6657 upper_bounds.SetTypeAt(index, value);
6658}

◆ SetDefaultAt()

void dart::TypeParameters::SetDefaultAt ( intptr_t  index,
const AbstractType value 
) const

Definition at line 6675 of file object.cc.

6676 {
6677 const TypeArguments& default_type_args = TypeArguments::Handle(defaults());
6678 default_type_args.SetTypeAt(index, value);
6679}

◆ SetIsGenericCovariantImplAt()

void dart::TypeParameters::SetIsGenericCovariantImplAt ( intptr_t  index,
bool  value 
) const

Definition at line 6714 of file object.cc.

6715 {
6716 const Array& flg = Array::Handle(flags());
6717 intptr_t flag = Smi::Value(Smi::RawCast(flg.At(index >> kFlagsPerSmiShift)));
6718 if (value) {
6719 flag |= 1 << (index % kFlagsPerSmiMask);
6720 } else {
6721 flag &= ~(1 << (index % kFlagsPerSmiMask));
6722 }
6723 flg.SetAt(index >> kFlagsPerSmiShift, Smi::Handle(Smi::New(flag)));
6724}
static SmiPtr New(intptr_t value)
Definition object.h:9985

◆ SetNameAt()

void dart::TypeParameters::SetNameAt ( intptr_t  index,
const String value 
) const

Definition at line 6634 of file object.cc.

6634 {
6635 const Array& names_array = Array::Handle(names());
6636 names_array.SetAt(index, value);
6637}

Friends And Related Symbol Documentation

◆ Class

friend class Class
friend

Definition at line 8534 of file object.h.

◆ ClassFinalizer

friend class ClassFinalizer
friend

Definition at line 8535 of file object.h.

◆ FlowGraphDeserializer

friend class FlowGraphDeserializer
friend

Definition at line 8537 of file object.h.

◆ FlowGraphSerializer

friend class FlowGraphSerializer
friend

Definition at line 8536 of file object.h.

◆ Function

friend class Function
friend

Definition at line 8538 of file object.h.

◆ FunctionType

friend class FunctionType
friend

Definition at line 8539 of file object.h.

◆ Object

friend class Object
friend

Definition at line 8540 of file object.h.

◆ Precompiler

friend class Precompiler
friend

Definition at line 8541 of file object.h.

◆ Type

friend class Type
friend

Definition at line 8542 of file object.h.

Member Data Documentation

◆ kFlagsPerSmi

constexpr intptr_t dart::TypeParameters::kFlagsPerSmi = 1LL << kFlagsPerSmiShift
staticconstexpr

Definition at line 8500 of file object.h.

◆ kFlagsPerSmiMask

constexpr intptr_t dart::TypeParameters::kFlagsPerSmiMask = kFlagsPerSmi - 1
staticconstexpr

Definition at line 8502 of file object.h.

◆ kFlagsPerSmiShift

constexpr intptr_t dart::TypeParameters::kFlagsPerSmiShift = kBitsPerWordLog2 - 1
staticconstexpr

Definition at line 8496 of file object.h.


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