OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_OBJECTS_H_ | 5 #ifndef V8_OBJECTS_H_ |
6 #define V8_OBJECTS_H_ | 6 #define V8_OBJECTS_H_ |
7 | 7 |
8 #include <iosfwd> | 8 #include <iosfwd> |
9 | 9 |
10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
(...skipping 1867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1878 MUST_USE_RESULT static Maybe<bool> IsExtensible(Handle<JSReceiver> object); | 1878 MUST_USE_RESULT static Maybe<bool> IsExtensible(Handle<JSReceiver> object); |
1879 | 1879 |
1880 // Tests for the fast common case for property enumeration. | 1880 // Tests for the fast common case for property enumeration. |
1881 bool IsSimpleEnum(); | 1881 bool IsSimpleEnum(); |
1882 | 1882 |
1883 // Returns the class name ([[Class]] property in the specification). | 1883 // Returns the class name ([[Class]] property in the specification). |
1884 String* class_name(); | 1884 String* class_name(); |
1885 | 1885 |
1886 // Returns the constructor name (the name (possibly, inferred name) of the | 1886 // Returns the constructor name (the name (possibly, inferred name) of the |
1887 // function that was used to instantiate the object). | 1887 // function that was used to instantiate the object). |
1888 String* constructor_name(); | 1888 static Handle<String> GetConstructorName(Handle<JSReceiver> receiver); |
1889 | 1889 |
1890 Context* GetCreationContext(); | 1890 Context* GetCreationContext(); |
1891 | 1891 |
1892 MUST_USE_RESULT static inline Maybe<PropertyAttributes> GetPropertyAttributes( | 1892 MUST_USE_RESULT static inline Maybe<PropertyAttributes> GetPropertyAttributes( |
1893 Handle<JSReceiver> object, Handle<Name> name); | 1893 Handle<JSReceiver> object, Handle<Name> name); |
1894 MUST_USE_RESULT static inline Maybe<PropertyAttributes> | 1894 MUST_USE_RESULT static inline Maybe<PropertyAttributes> |
1895 GetOwnPropertyAttributes(Handle<JSReceiver> object, Handle<Name> name); | 1895 GetOwnPropertyAttributes(Handle<JSReceiver> object, Handle<Name> name); |
1896 | 1896 |
1897 MUST_USE_RESULT static inline Maybe<PropertyAttributes> GetElementAttributes( | 1897 MUST_USE_RESULT static inline Maybe<PropertyAttributes> GetElementAttributes( |
1898 Handle<JSReceiver> object, uint32_t index); | 1898 Handle<JSReceiver> object, uint32_t index); |
(...skipping 3741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5640 Handle<Map> map, int modify_index, StoreMode store_mode, | 5640 Handle<Map> map, int modify_index, StoreMode store_mode, |
5641 PropertyKind kind, PropertyAttributes attributes, const char* reason); | 5641 PropertyKind kind, PropertyAttributes attributes, const char* reason); |
5642 | 5642 |
5643 static Handle<Map> PrepareForDataProperty(Handle<Map> old_map, | 5643 static Handle<Map> PrepareForDataProperty(Handle<Map> old_map, |
5644 int descriptor_number, | 5644 int descriptor_number, |
5645 Handle<Object> value); | 5645 Handle<Object> value); |
5646 | 5646 |
5647 static Handle<Map> Normalize(Handle<Map> map, PropertyNormalizationMode mode, | 5647 static Handle<Map> Normalize(Handle<Map> map, PropertyNormalizationMode mode, |
5648 const char* reason); | 5648 const char* reason); |
5649 | 5649 |
5650 // Returns the constructor name (the name (possibly, inferred name) of the | |
5651 // function that was used to instantiate the object). | |
5652 String* constructor_name(); | |
5653 | |
5654 // Tells whether the map is used for JSObjects in dictionary mode (ie | 5650 // Tells whether the map is used for JSObjects in dictionary mode (ie |
5655 // normalized objects, ie objects for which HasFastProperties returns false). | 5651 // normalized objects, ie objects for which HasFastProperties returns false). |
5656 // A map can never be used for both dictionary mode and fast mode JSObjects. | 5652 // A map can never be used for both dictionary mode and fast mode JSObjects. |
5657 // False by default and for HeapObjects that are not JSObjects. | 5653 // False by default and for HeapObjects that are not JSObjects. |
5658 inline void set_dictionary_map(bool value); | 5654 inline void set_dictionary_map(bool value); |
5659 inline bool is_dictionary_map(); | 5655 inline bool is_dictionary_map(); |
5660 | 5656 |
5661 // Tells whether the instance needs security checks when accessing its | 5657 // Tells whether the instance needs security checks when accessing its |
5662 // properties. | 5658 // properties. |
5663 inline void set_is_access_check_needed(bool access_check_needed); | 5659 inline void set_is_access_check_needed(bool access_check_needed); |
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6148 // is stored. Returns UNREGISTERED if this prototype has not been registered. | 6144 // is stored. Returns UNREGISTERED if this prototype has not been registered. |
6149 inline int registry_slot() const; | 6145 inline int registry_slot() const; |
6150 inline void set_registry_slot(int slot); | 6146 inline void set_registry_slot(int slot); |
6151 // [validity_cell]: Cell containing the validity bit for prototype chains | 6147 // [validity_cell]: Cell containing the validity bit for prototype chains |
6152 // going through this object, or Smi(0) if uninitialized. | 6148 // going through this object, or Smi(0) if uninitialized. |
6153 // When a prototype object changes its map, then both its own validity cell | 6149 // When a prototype object changes its map, then both its own validity cell |
6154 // and those of all "downstream" prototypes are invalidated; handlers for a | 6150 // and those of all "downstream" prototypes are invalidated; handlers for a |
6155 // given receiver embed the currently valid cell for that receiver's prototype | 6151 // given receiver embed the currently valid cell for that receiver's prototype |
6156 // during their compilation and check it on execution. | 6152 // during their compilation and check it on execution. |
6157 DECL_ACCESSORS(validity_cell, Object) | 6153 DECL_ACCESSORS(validity_cell, Object) |
6158 // [constructor_name]: User-friendly name of the original constructor. | |
6159 DECL_ACCESSORS(constructor_name, Object) | |
6160 | 6154 |
6161 DECLARE_CAST(PrototypeInfo) | 6155 DECLARE_CAST(PrototypeInfo) |
6162 | 6156 |
6163 // Dispatched behavior. | 6157 // Dispatched behavior. |
6164 DECLARE_PRINTER(PrototypeInfo) | 6158 DECLARE_PRINTER(PrototypeInfo) |
6165 DECLARE_VERIFIER(PrototypeInfo) | 6159 DECLARE_VERIFIER(PrototypeInfo) |
6166 | 6160 |
6167 static const int kPrototypeUsersOffset = HeapObject::kHeaderSize; | 6161 static const int kPrototypeUsersOffset = HeapObject::kHeaderSize; |
6168 static const int kRegistrySlotOffset = kPrototypeUsersOffset + kPointerSize; | 6162 static const int kRegistrySlotOffset = kPrototypeUsersOffset + kPointerSize; |
6169 static const int kValidityCellOffset = kRegistrySlotOffset + kPointerSize; | 6163 static const int kValidityCellOffset = kRegistrySlotOffset + kPointerSize; |
(...skipping 4549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10719 } | 10713 } |
10720 return value; | 10714 return value; |
10721 } | 10715 } |
10722 }; | 10716 }; |
10723 | 10717 |
10724 | 10718 |
10725 } // NOLINT, false-positive due to second-order macros. | 10719 } // NOLINT, false-positive due to second-order macros. |
10726 } // NOLINT, false-positive due to second-order macros. | 10720 } // NOLINT, false-positive due to second-order macros. |
10727 | 10721 |
10728 #endif // V8_OBJECTS_H_ | 10722 #endif // V8_OBJECTS_H_ |
OLD | NEW |