Flutter Engine
The Flutter Engine
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Static Public Member Functions | Friends | List of all members
dart::Namespace Class Reference

#include <object.h>

Inheritance diagram for dart::Namespace:
dart::Object

Public Member Functions

LibraryPtr target () const
 
ArrayPtr show_names () const
 
ArrayPtr hide_names () const
 
LibraryPtr owner () const
 
bool HidesName (const String &name) const
 
ObjectPtr Lookup (const String &name, ZoneGrowableArray< intptr_t > *trail=nullptr) 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 InstanceSize ()
 
static NamespacePtr New (const Library &library, const Array &show_names, const Array &hide_names, const Library &owner)
 
- 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)
 

Friends

class Class
 
class Precompiler
 

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
 
- Static Public Attributes inherited from dart::Object
static constexpr intptr_t kHashBits = 30
 
static const ClassId kClassId = kObjectCid
 
- 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 5446 of file object.h.

Member Function Documentation

◆ hide_names()

ArrayPtr dart::Namespace::hide_names ( ) const
inline

Definition at line 5450 of file object.h.

5450{ return untag()->hide_names(); }
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

◆ HidesName()

bool dart::Namespace::HidesName ( const String name) const

Definition at line 14918 of file object.cc.

14918 {
14919 // Quick check for common case with no combinators.
14920 if (hide_names() == show_names()) {
14922 return false;
14923 }
14924 const String* plain_name = &name;
14927 } else if (Field::IsSetterName(name)) {
14929 }
14930 // Check whether the name is in the list of explicitly hidden names.
14931 if (hide_names() != Array::null()) {
14932 const Array& names = Array::Handle(hide_names());
14933 String& hidden = String::Handle();
14934 intptr_t num_names = names.Length();
14935 for (intptr_t i = 0; i < num_names; i++) {
14936 hidden ^= names.At(i);
14937 if (plain_name->Equals(hidden)) {
14938 return true;
14939 }
14940 }
14941 }
14942 // The name is not explicitly hidden. Now check whether it is in the
14943 // list of explicitly visible names, if there is one.
14944 if (show_names() != Array::null()) {
14945 const Array& names = Array::Handle(show_names());
14946 String& shown = String::Handle();
14947 intptr_t num_names = names.Length();
14948 for (intptr_t i = 0; i < num_names; i++) {
14949 shown ^= names.At(i);
14950 if (plain_name->Equals(shown)) {
14951 return false;
14952 }
14953 }
14954 // There is a list of visible names. The name we're looking for is not
14955 // contained in the list, so it is hidden.
14956 return true;
14957 }
14958 // The name is not filtered out.
14959 return false;
14960}
static StringPtr NameFromSetter(const String &setter_name)
Definition: object.cc:11821
static bool IsGetterName(const String &function_name)
Definition: object.cc:11831
static bool IsSetterName(const String &function_name)
Definition: object.cc:11835
static StringPtr NameFromGetter(const String &getter_name)
Definition: object.cc:11816
ArrayPtr hide_names() const
Definition: object.h:5450
ArrayPtr show_names() const
Definition: object.h:5449
static ObjectPtr null()
Definition: object.h:433
static Object & Handle()
Definition: object.h:407
#define ASSERT(E)
static const char *const names[]
Definition: symbols.cc:24
const char *const name

◆ InstanceSize()

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

Definition at line 5453 of file object.h.

5453 {
5454 return RoundedAllocationSize(sizeof(UntaggedNamespace));
5455 }
static constexpr intptr_t RoundedAllocationSize(intptr_t size)
Definition: object.h:758

◆ Lookup()

ObjectPtr dart::Namespace::Lookup ( const String name,
ZoneGrowableArray< intptr_t > *  trail = nullptr 
) const

Definition at line 14964 of file object.cc.

14965 {
14966 Zone* zone = Thread::Current()->zone();
14967 const Library& lib = Library::Handle(zone, target());
14968
14969 if (trail != nullptr) {
14970 // Look for cycle in reexport graph.
14971 for (int i = 0; i < trail->length(); i++) {
14972 if (trail->At(i) == lib.index()) {
14973 for (int j = i + 1; j < trail->length(); j++) {
14974 (*trail)[j] = -1;
14975 }
14976 return Object::null();
14977 }
14978 }
14979 }
14980
14981 lib.EnsureTopLevelClassIsFinalized();
14982
14983 intptr_t ignore = 0;
14984 // Lookup the name in the library's symbols.
14985 Object& obj = Object::Handle(zone, lib.LookupEntry(name, &ignore));
14987 (obj.IsNull() || obj.IsLibraryPrefix())) {
14988 String& accessor_name = String::Handle(zone);
14989 accessor_name = Field::LookupGetterSymbol(name);
14990 if (!accessor_name.IsNull()) {
14991 obj = lib.LookupEntry(accessor_name, &ignore);
14992 }
14993 if (obj.IsNull()) {
14994 accessor_name = Field::LookupSetterSymbol(name);
14995 if (!accessor_name.IsNull()) {
14996 obj = lib.LookupEntry(accessor_name, &ignore);
14997 }
14998 }
14999 }
15000
15001 // Library prefixes are not exported.
15002 if (obj.IsNull() || obj.IsLibraryPrefix()) {
15003 // Lookup in the re-exported symbols.
15004 obj = lib.LookupReExport(name, trail);
15005 if (obj.IsNull() && !Field::IsSetterName(name)) {
15006 // LookupReExport() only returns objects that match the given name.
15007 // If there is no field/func/getter, try finding a setter.
15008 const String& setter_name =
15010 if (!setter_name.IsNull()) {
15011 obj = lib.LookupReExport(setter_name, trail);
15012 }
15013 }
15014 }
15015 if (obj.IsNull() || HidesName(name) || obj.IsLibraryPrefix()) {
15016 return Object::null();
15017 }
15018 return obj.ptr();
15019}
const T & At(intptr_t index) const
intptr_t length() const
static StringPtr LookupSetterSymbol(const String &field_name)
Definition: object.cc:11812
static StringPtr LookupGetterSymbol(const String &field_name)
Definition: object.cc:11800
bool HidesName(const String &name) const
Definition: object.cc:14918
LibraryPtr target() const
Definition: object.h:5448
Zone * zone() const
Definition: thread_state.h:37
static Thread * Current()
Definition: thread.h:362

◆ New()

NamespacePtr dart::Namespace::New ( const Library library,
const Array show_names,
const Array hide_names,
const Library owner 
)
static

Definition at line 15026 of file object.cc.

15029 {
15030 ASSERT(show_names.IsNull() || (show_names.Length() > 0));
15031 ASSERT(hide_names.IsNull() || (hide_names.Length() > 0));
15032 const Namespace& result = Namespace::Handle(Namespace::New());
15033 result.untag()->set_target(target.ptr());
15034 result.untag()->set_show_names(show_names.ptr());
15035 result.untag()->set_hide_names(hide_names.ptr());
15036 result.untag()->set_owner(owner.ptr());
15037 return result.ptr();
15038}
LibraryPtr owner() const
Definition: object.h:5451
GAsyncResult * result

◆ owner()

LibraryPtr dart::Namespace::owner ( ) const
inline

Definition at line 5451 of file object.h.

5451{ return untag()->owner(); }

◆ show_names()

ArrayPtr dart::Namespace::show_names ( ) const
inline

Definition at line 5449 of file object.h.

5449{ return untag()->show_names(); }

◆ target()

LibraryPtr dart::Namespace::target ( ) const
inline

Definition at line 5448 of file object.h.

5448{ return untag()->target(); }

Friends And Related Function Documentation

◆ Class

friend class Class
friend

Definition at line 5470 of file object.h.

◆ Precompiler

friend class Precompiler
friend

Definition at line 5471 of file object.h.


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