Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef VM_OBJECT_H_ | 5 #ifndef VM_OBJECT_H_ |
| 6 #define VM_OBJECT_H_ | 6 #define VM_OBJECT_H_ |
| 7 | 7 |
| 8 #include "include/dart_api.h" | 8 #include "include/dart_api.h" |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "platform/utils.h" | 10 #include "platform/utils.h" |
| (...skipping 1701 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1712 | 1712 |
| 1713 FINAL_HEAP_OBJECT_IMPLEMENTATION(TypeArguments, Object); | 1713 FINAL_HEAP_OBJECT_IMPLEMENTATION(TypeArguments, Object); |
| 1714 friend class AbstractType; | 1714 friend class AbstractType; |
| 1715 friend class Class; | 1715 friend class Class; |
| 1716 }; | 1716 }; |
| 1717 | 1717 |
| 1718 | 1718 |
| 1719 class PatchClass : public Object { | 1719 class PatchClass : public Object { |
| 1720 public: | 1720 public: |
| 1721 RawClass* patched_class() const { return raw_ptr()->patched_class_; } | 1721 RawClass* patched_class() const { return raw_ptr()->patched_class_; } |
| 1722 RawClass* source_class() const { return raw_ptr()->source_class_; } | 1722 RawClass* source_class() const { return raw_ptr()->source_class_; } |
|
Ivan Posva
2015/11/24 21:30:11
origin_class() or just origin()?
hausner
2015/11/24 22:45:35
origin_class(). Done.
| |
| 1723 RawScript* Script() const; | 1723 RawScript* script() const { return raw_ptr()->script_; } |
| 1724 | 1724 |
| 1725 static intptr_t InstanceSize() { | 1725 static intptr_t InstanceSize() { |
| 1726 return RoundedAllocationSize(sizeof(RawPatchClass)); | 1726 return RoundedAllocationSize(sizeof(RawPatchClass)); |
| 1727 } | 1727 } |
| 1728 static bool IsInFullSnapshot(RawPatchClass* cls) { | 1728 static bool IsInFullSnapshot(RawPatchClass* cls) { |
| 1729 NoSafepointScope no_safepoint; | 1729 NoSafepointScope no_safepoint; |
| 1730 return Class::IsInFullSnapshot(cls->ptr()->patched_class_); | 1730 return Class::IsInFullSnapshot(cls->ptr()->patched_class_); |
| 1731 } | 1731 } |
| 1732 | 1732 |
| 1733 static RawPatchClass* New(const Class& patched_class, | 1733 static RawPatchClass* New(const Class& patched_class, |
| 1734 const Class& source_class); | 1734 const Class& source_class); |
| 1735 | 1735 |
| 1736 static RawPatchClass* New(const Class& patched_class, | |
| 1737 const Script& source); | |
| 1738 | |
| 1736 private: | 1739 private: |
| 1737 void set_patched_class(const Class& value) const; | 1740 void set_patched_class(const Class& value) const; |
| 1738 void set_source_class(const Class& value) const; | 1741 void set_source_class(const Class& value) const; |
| 1742 void set_script(const Script& value) const; | |
| 1739 | 1743 |
| 1740 static RawPatchClass* New(); | 1744 static RawPatchClass* New(); |
| 1741 | 1745 |
| 1742 FINAL_HEAP_OBJECT_IMPLEMENTATION(PatchClass, Object); | 1746 FINAL_HEAP_OBJECT_IMPLEMENTATION(PatchClass, Object); |
| 1743 friend class Class; | 1747 friend class Class; |
| 1744 }; | 1748 }; |
| 1745 | 1749 |
| 1746 | 1750 |
| 1747 // Object holding information about an IC: test classes and their | 1751 // Object holding information about an IC: test classes and their |
| 1748 // corresponding targets. | 1752 // corresponding targets. |
| (...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2129 | 2133 |
| 2130 // Returns true if the signature of this function is instantiated, i.e. if it | 2134 // Returns true if the signature of this function is instantiated, i.e. if it |
| 2131 // does not involve generic parameter types or generic result type. | 2135 // does not involve generic parameter types or generic result type. |
| 2132 bool HasInstantiatedSignature() const; | 2136 bool HasInstantiatedSignature() const; |
| 2133 | 2137 |
| 2134 // Build a string of the form 'T, {b: B, c: C} representing the user | 2138 // Build a string of the form 'T, {b: B, c: C} representing the user |
| 2135 // visible formal parameters of the function. | 2139 // visible formal parameters of the function. |
| 2136 RawString* UserVisibleFormalParameters() const; | 2140 RawString* UserVisibleFormalParameters() const; |
| 2137 | 2141 |
| 2138 RawClass* Owner() const; | 2142 RawClass* Owner() const; |
| 2139 RawClass* origin() const; | 2143 RawClass* origin() const; |
|
Ivan Posva
2015/11/24 21:30:12
Origin()
hausner
2015/11/24 22:45:35
Leaving origin(), as discussed offline.
| |
| 2140 RawScript* script() const; | 2144 RawScript* script() const; |
|
Ivan Posva
2015/11/24 21:30:12
Script()
hausner
2015/11/24 22:45:35
Leaving lower-case due to name conflict with class
| |
| 2145 RawObject* RawOwner() const { return raw_ptr()->owner_; } | |
| 2141 | 2146 |
| 2142 RawJSRegExp* regexp() const; | 2147 RawJSRegExp* regexp() const; |
| 2143 intptr_t string_specialization_cid() const; | 2148 intptr_t string_specialization_cid() const; |
| 2144 void SetRegExpData(const JSRegExp& regexp, | 2149 void SetRegExpData(const JSRegExp& regexp, |
| 2145 intptr_t string_specialization_cid) const; | 2150 intptr_t string_specialization_cid) const; |
| 2146 | 2151 |
| 2147 RawString* native_name() const; | 2152 RawString* native_name() const; |
| 2148 void set_native_name(const String& name) const; | 2153 void set_native_name(const String& name) const; |
| 2149 | 2154 |
| 2150 RawAbstractType* result_type() const { return raw_ptr()->result_type_; } | 2155 RawAbstractType* result_type() const { return raw_ptr()->result_type_; } |
| (...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2858 RawString* PrettyName() const; | 2863 RawString* PrettyName() const; |
| 2859 RawString* UserVisibleName() const; | 2864 RawString* UserVisibleName() const; |
| 2860 virtual RawString* DictionaryName() const { return name(); } | 2865 virtual RawString* DictionaryName() const { return name(); } |
| 2861 | 2866 |
| 2862 bool is_static() const { return StaticBit::decode(raw_ptr()->kind_bits_); } | 2867 bool is_static() const { return StaticBit::decode(raw_ptr()->kind_bits_); } |
| 2863 bool is_final() const { return FinalBit::decode(raw_ptr()->kind_bits_); } | 2868 bool is_final() const { return FinalBit::decode(raw_ptr()->kind_bits_); } |
| 2864 bool is_const() const { return ConstBit::decode(raw_ptr()->kind_bits_); } | 2869 bool is_const() const { return ConstBit::decode(raw_ptr()->kind_bits_); } |
| 2865 bool is_reflectable() const { | 2870 bool is_reflectable() const { |
| 2866 return ReflectableBit::decode(raw_ptr()->kind_bits_); | 2871 return ReflectableBit::decode(raw_ptr()->kind_bits_); |
| 2867 } | 2872 } |
| 2873 void set_is_reflectable(bool value) const { | |
| 2874 set_kind_bits(ReflectableBit::update(value, raw_ptr()->kind_bits_)); | |
| 2875 } | |
| 2868 bool is_double_initialized() const { | 2876 bool is_double_initialized() const { |
| 2869 return DoubleInitializedBit::decode(raw_ptr()->kind_bits_); | 2877 return DoubleInitializedBit::decode(raw_ptr()->kind_bits_); |
| 2870 } | 2878 } |
| 2871 // Called in parser after allocating field, immutable property otherwise. | 2879 // Called in parser after allocating field, immutable property otherwise. |
| 2872 // Marks fields that are initialized with a simple double constant. | 2880 // Marks fields that are initialized with a simple double constant. |
| 2873 void set_is_double_initialized(bool value) const { | 2881 void set_is_double_initialized(bool value) const { |
| 2874 ASSERT(Thread::Current()->IsMutatorThread()); | 2882 ASSERT(Thread::Current()->IsMutatorThread()); |
| 2875 set_kind_bits(DoubleInitializedBit::update(value, raw_ptr()->kind_bits_)); | 2883 set_kind_bits(DoubleInitializedBit::update(value, raw_ptr()->kind_bits_)); |
| 2876 } | 2884 } |
| 2877 | 2885 |
| 2878 inline intptr_t Offset() const; | 2886 inline intptr_t Offset() const; |
| 2879 // Called during class finalization. | 2887 // Called during class finalization. |
| 2880 inline void SetOffset(intptr_t offset_in_bytes) const; | 2888 inline void SetOffset(intptr_t offset_in_bytes) const; |
| 2881 | 2889 |
| 2882 inline RawInstance* StaticValue() const; | 2890 inline RawInstance* StaticValue() const; |
| 2883 inline void SetStaticValue(const Instance& value, | 2891 inline void SetStaticValue(const Instance& value, |
| 2884 bool save_initial_value = false) const; | 2892 bool save_initial_value = false) const; |
| 2885 | 2893 |
| 2886 RawClass* owner() const; | 2894 RawClass* owner() const; |
|
Ivan Posva
2015/11/24 21:30:11
Owner(), Origin(), Script()
| |
| 2887 RawClass* origin() const; // Either mixin class, or same as owner(). | 2895 RawClass* origin() const; // Either mixin class, or same as owner(). |
| 2896 RawScript* script() const; | |
| 2897 RawObject* RawOwner() const { return raw_ptr()->owner_; } | |
| 2888 | 2898 |
| 2889 RawAbstractType* type() const { return raw_ptr()->type_; } | 2899 RawAbstractType* type() const { return raw_ptr()->type_; } |
| 2890 // Used by class finalizer, otherwise initialized in constructor. | 2900 // Used by class finalizer, otherwise initialized in constructor. |
| 2891 void SetFieldType(const AbstractType& value) const; | 2901 void SetFieldType(const AbstractType& value) const; |
| 2892 | 2902 |
| 2893 static intptr_t InstanceSize() { | 2903 static intptr_t InstanceSize() { |
| 2894 return RoundedAllocationSize(sizeof(RawField)); | 2904 return RoundedAllocationSize(sizeof(RawField)); |
| 2895 } | 2905 } |
| 2896 | 2906 |
| 2897 static RawField* New(const String& name, | 2907 static RawField* New(const String& name, |
| 2898 bool is_static, | 2908 bool is_static, |
| 2899 bool is_final, | 2909 bool is_final, |
| 2900 bool is_const, | 2910 bool is_const, |
| 2901 bool is_reflectable, | 2911 bool is_reflectable, |
| 2902 const Class& owner, | 2912 const Class& owner, |
| 2903 const AbstractType& type, | 2913 const AbstractType& type, |
| 2904 intptr_t token_pos); | 2914 intptr_t token_pos); |
| 2905 | 2915 |
| 2916 static RawField* NewTopLevel(const String& name, | |
| 2917 bool is_final, | |
| 2918 bool is_const, | |
| 2919 const Object& owner, | |
| 2920 intptr_t token_pos); | |
| 2921 | |
| 2906 // Allocate new field object, clone values from this field. The | 2922 // Allocate new field object, clone values from this field. The |
| 2907 // owner of the clone is new_owner. | 2923 // owner of the clone is new_owner. |
| 2908 RawField* Clone(const Class& new_owner) const; | 2924 RawField* Clone(const Class& new_owner) const; |
| 2909 | 2925 |
| 2910 static intptr_t instance_field_offset() { | 2926 static intptr_t instance_field_offset() { |
| 2911 return OFFSET_OF(RawField, value_.offset_); | 2927 return OFFSET_OF(RawField, value_.offset_); |
| 2912 } | 2928 } |
| 2913 static intptr_t static_value_offset() { | 2929 static intptr_t static_value_offset() { |
| 2914 return OFFSET_OF(RawField, value_.static_value_); | 2930 return OFFSET_OF(RawField, value_.static_value_); |
| 2915 } | 2931 } |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3084 void set_name(const String& value) const; | 3100 void set_name(const String& value) const; |
| 3085 void set_is_static(bool is_static) const { | 3101 void set_is_static(bool is_static) const { |
| 3086 set_kind_bits(StaticBit::update(is_static, raw_ptr()->kind_bits_)); | 3102 set_kind_bits(StaticBit::update(is_static, raw_ptr()->kind_bits_)); |
| 3087 } | 3103 } |
| 3088 void set_is_final(bool is_final) const { | 3104 void set_is_final(bool is_final) const { |
| 3089 set_kind_bits(FinalBit::update(is_final, raw_ptr()->kind_bits_)); | 3105 set_kind_bits(FinalBit::update(is_final, raw_ptr()->kind_bits_)); |
| 3090 } | 3106 } |
| 3091 void set_is_const(bool value) const { | 3107 void set_is_const(bool value) const { |
| 3092 set_kind_bits(ConstBit::update(value, raw_ptr()->kind_bits_)); | 3108 set_kind_bits(ConstBit::update(value, raw_ptr()->kind_bits_)); |
| 3093 } | 3109 } |
| 3094 void set_is_reflectable(bool value) const { | |
| 3095 set_kind_bits(ReflectableBit::update(value, raw_ptr()->kind_bits_)); | |
| 3096 } | |
| 3097 void set_owner(const Object& value) const { | 3110 void set_owner(const Object& value) const { |
| 3098 StorePointer(&raw_ptr()->owner_, value.raw()); | 3111 StorePointer(&raw_ptr()->owner_, value.raw()); |
| 3099 } | 3112 } |
| 3100 void set_token_pos(intptr_t token_pos) const { | 3113 void set_token_pos(intptr_t token_pos) const { |
| 3101 StoreNonPointer(&raw_ptr()->token_pos_, token_pos); | 3114 StoreNonPointer(&raw_ptr()->token_pos_, token_pos); |
| 3102 } | 3115 } |
| 3103 void set_kind_bits(intptr_t value) const { | 3116 void set_kind_bits(intptr_t value) const { |
| 3104 StoreNonPointer(&raw_ptr()->kind_bits_, static_cast<uint8_t>(value)); | 3117 StoreNonPointer(&raw_ptr()->kind_bits_, static_cast<uint8_t>(value)); |
| 3105 } | 3118 } |
| 3106 | 3119 |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3312 | 3325 |
| 3313 friend class ClassDictionaryIterator; | 3326 friend class ClassDictionaryIterator; |
| 3314 friend class LibraryPrefixIterator; | 3327 friend class LibraryPrefixIterator; |
| 3315 DISALLOW_COPY_AND_ASSIGN(DictionaryIterator); | 3328 DISALLOW_COPY_AND_ASSIGN(DictionaryIterator); |
| 3316 }; | 3329 }; |
| 3317 | 3330 |
| 3318 | 3331 |
| 3319 class ClassDictionaryIterator : public DictionaryIterator { | 3332 class ClassDictionaryIterator : public DictionaryIterator { |
| 3320 public: | 3333 public: |
| 3321 enum IterationKind { | 3334 enum IterationKind { |
| 3335 // TODO(hausner): fix call sites that use kIteratePrivate. There is only | |
| 3336 // one top-level class per library left, not an array to iterate over. | |
| 3322 kIteratePrivate, | 3337 kIteratePrivate, |
| 3323 kNoIteratePrivate | 3338 kNoIteratePrivate |
| 3324 }; | 3339 }; |
| 3325 | 3340 |
| 3326 ClassDictionaryIterator(const Library& library, | 3341 ClassDictionaryIterator(const Library& library, |
| 3327 IterationKind kind = kNoIteratePrivate); | 3342 IterationKind kind = kNoIteratePrivate); |
| 3328 | 3343 |
| 3329 bool HasNext() const { return (next_ix_ < size_) || (anon_ix_ < anon_size_); } | 3344 bool HasNext() const { |
| 3345 return (next_ix_ < size_) || !toplevel_class_.IsNull(); | |
| 3346 } | |
| 3330 | 3347 |
| 3331 // Returns a non-null raw class. | 3348 // Returns a non-null raw class. |
| 3332 RawClass* GetNextClass(); | 3349 RawClass* GetNextClass(); |
| 3333 | 3350 |
| 3334 private: | 3351 private: |
| 3335 void MoveToNextClass(); | 3352 void MoveToNextClass(); |
| 3336 | 3353 |
| 3337 const Array& anon_array_; | 3354 Class& toplevel_class_; |
| 3338 const int anon_size_; // Number of anonymous classes to iterate over. | |
| 3339 int anon_ix_; // Index of next anonymous class. | |
| 3340 | 3355 |
| 3341 DISALLOW_COPY_AND_ASSIGN(ClassDictionaryIterator); | 3356 DISALLOW_COPY_AND_ASSIGN(ClassDictionaryIterator); |
| 3342 }; | 3357 }; |
| 3343 | 3358 |
| 3344 | 3359 |
| 3345 class LibraryPrefixIterator : public DictionaryIterator { | 3360 class LibraryPrefixIterator : public DictionaryIterator { |
| 3346 public: | 3361 public: |
| 3347 explicit LibraryPrefixIterator(const Library& library); | 3362 explicit LibraryPrefixIterator(const Library& library); |
| 3348 RawLibraryPrefix* GetNext(); | 3363 RawLibraryPrefix* GetNext(); |
| 3349 private: | 3364 private: |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3425 // If the local dictionary contains no entry for these names, | 3440 // If the local dictionary contains no entry for these names, |
| 3426 // look in the scopes of all libraries that are imported | 3441 // look in the scopes of all libraries that are imported |
| 3427 // without a library prefix. | 3442 // without a library prefix. |
| 3428 RawObject* ResolveName(const String& name) const; | 3443 RawObject* ResolveName(const String& name) const; |
| 3429 | 3444 |
| 3430 void AddAnonymousClass(const Class& cls) const; | 3445 void AddAnonymousClass(const Class& cls) const; |
| 3431 | 3446 |
| 3432 void AddExport(const Namespace& ns) const; | 3447 void AddExport(const Namespace& ns) const; |
| 3433 | 3448 |
| 3434 void AddClassMetadata(const Class& cls, | 3449 void AddClassMetadata(const Class& cls, |
| 3435 const Class& toplevel_class, | 3450 const PatchClass& tl_owner, |
| 3436 intptr_t token_pos) const; | 3451 intptr_t token_pos) const; |
| 3437 void AddFieldMetadata(const Field& field, intptr_t token_pos) const; | 3452 void AddFieldMetadata(const Field& field, intptr_t token_pos) const; |
| 3438 void AddFunctionMetadata(const Function& func, intptr_t token_pos) const; | 3453 void AddFunctionMetadata(const Function& func, intptr_t token_pos) const; |
| 3439 void AddLibraryMetadata(const Class& cls, intptr_t token_pos) const; | 3454 void AddLibraryMetadata(const PatchClass& tl_owner, intptr_t token_pos) const; |
| 3440 void AddTypeParameterMetadata(const TypeParameter& param, | 3455 void AddTypeParameterMetadata(const TypeParameter& param, |
| 3441 intptr_t token_pos) const; | 3456 intptr_t token_pos) const; |
| 3442 RawObject* GetMetadata(const Object& obj) const; | 3457 RawObject* GetMetadata(const Object& obj) const; |
| 3443 | 3458 |
| 3444 intptr_t num_anonymous_classes() const { return raw_ptr()->num_anonymous_; } | 3459 RawClass* toplevel_class() const { |
| 3445 RawArray* anonymous_classes() const { return raw_ptr()->anonymous_classes_; } | 3460 return raw_ptr()->toplevel_class_; |
| 3461 } | |
| 3462 void set_toplevel_class(const Class& value) const; | |
| 3446 | 3463 |
| 3447 RawGrowableObjectArray* patch_classes() const { | 3464 RawGrowableObjectArray* patch_classes() const { |
| 3448 return raw_ptr()->patch_classes_; | 3465 return raw_ptr()->patch_classes_; |
| 3449 } | 3466 } |
| 3450 | 3467 |
| 3451 // Library imports. | 3468 // Library imports. |
| 3452 RawArray* imports() const { return raw_ptr()->imports_; } | 3469 RawArray* imports() const { return raw_ptr()->imports_; } |
| 3453 RawArray* exports() const { return raw_ptr()->exports_; } | 3470 RawArray* exports() const { return raw_ptr()->exports_; } |
| 3454 void AddImport(const Namespace& ns) const; | 3471 void AddImport(const Namespace& ns) const; |
| 3455 intptr_t num_imports() const { return raw_ptr()->num_imports_; } | 3472 intptr_t num_imports() const { return raw_ptr()->num_imports_; } |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3583 void GrowDictionary(const Array& dict, intptr_t dict_size) const; | 3600 void GrowDictionary(const Array& dict, intptr_t dict_size) const; |
| 3584 static RawLibrary* NewLibraryHelper(const String& url, | 3601 static RawLibrary* NewLibraryHelper(const String& url, |
| 3585 bool import_core_lib); | 3602 bool import_core_lib); |
| 3586 RawObject* LookupEntry(const String& name, intptr_t *index) const; | 3603 RawObject* LookupEntry(const String& name, intptr_t *index) const; |
| 3587 | 3604 |
| 3588 static bool IsKeyUsed(intptr_t key); | 3605 static bool IsKeyUsed(intptr_t key); |
| 3589 void AllocatePrivateKey() const; | 3606 void AllocatePrivateKey() const; |
| 3590 | 3607 |
| 3591 RawString* MakeMetadataName(const Object& obj) const; | 3608 RawString* MakeMetadataName(const Object& obj) const; |
| 3592 RawField* GetMetadataField(const String& metaname) const; | 3609 RawField* GetMetadataField(const String& metaname) const; |
| 3593 void AddMetadata(const Class& cls, | 3610 void AddMetadata(const Object& owner, |
| 3594 const String& name, | 3611 const String& name, |
| 3595 intptr_t token_pos) const; | 3612 intptr_t token_pos) const; |
| 3596 | 3613 |
| 3597 FINAL_HEAP_OBJECT_IMPLEMENTATION(Library, Object); | 3614 FINAL_HEAP_OBJECT_IMPLEMENTATION(Library, Object); |
| 3598 | 3615 |
| 3599 friend class Bootstrap; | 3616 friend class Bootstrap; |
| 3600 friend class Class; | 3617 friend class Class; |
| 3601 friend class Debugger; | 3618 friend class Debugger; |
| 3602 friend class DictionaryIterator; | 3619 friend class DictionaryIterator; |
| 3603 friend class Namespace; | 3620 friend class Namespace; |
| 3604 friend class Object; | 3621 friend class Object; |
| 3605 }; | 3622 }; |
| 3606 | 3623 |
| 3607 | 3624 |
| 3608 // A Namespace contains the names in a library dictionary, filtered by | 3625 // A Namespace contains the names in a library dictionary, filtered by |
| 3609 // the show/hide combinators. | 3626 // the show/hide combinators. |
| 3610 class Namespace : public Object { | 3627 class Namespace : public Object { |
| 3611 public: | 3628 public: |
| 3612 RawLibrary* library() const { return raw_ptr()->library_; } | 3629 RawLibrary* library() const { return raw_ptr()->library_; } |
| 3613 RawArray* show_names() const { return raw_ptr()->show_names_; } | 3630 RawArray* show_names() const { return raw_ptr()->show_names_; } |
| 3614 RawArray* hide_names() const { return raw_ptr()->hide_names_; } | 3631 RawArray* hide_names() const { return raw_ptr()->hide_names_; } |
| 3615 | 3632 |
| 3616 void AddMetadata(intptr_t token_pos, const Class& owner_class); | 3633 void AddMetadata(const PatchClass& owner, intptr_t token_pos); |
| 3617 RawObject* GetMetadata() const; | 3634 RawObject* GetMetadata() const; |
| 3618 | 3635 |
| 3619 static intptr_t InstanceSize() { | 3636 static intptr_t InstanceSize() { |
| 3620 return RoundedAllocationSize(sizeof(RawNamespace)); | 3637 return RoundedAllocationSize(sizeof(RawNamespace)); |
| 3621 } | 3638 } |
| 3622 | 3639 |
| 3623 bool HidesName(const String& name) const; | 3640 bool HidesName(const String& name) const; |
| 3624 RawObject* Lookup(const String& name) const; | 3641 RawObject* Lookup(const String& name) const; |
| 3625 | 3642 |
| 3626 static RawNamespace* New(const Library& library, | 3643 static RawNamespace* New(const Library& library, |
| (...skipping 4583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8210 | 8227 |
| 8211 | 8228 |
| 8212 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, | 8229 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, |
| 8213 intptr_t index) { | 8230 intptr_t index) { |
| 8214 return array.At((index * kEntryLength) + kTargetFunctionIndex); | 8231 return array.At((index * kEntryLength) + kTargetFunctionIndex); |
| 8215 } | 8232 } |
| 8216 | 8233 |
| 8217 } // namespace dart | 8234 } // namespace dart |
| 8218 | 8235 |
| 8219 #endif // VM_OBJECT_H_ | 8236 #endif // VM_OBJECT_H_ |
| OLD | NEW |