| 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 1809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1820 // Retrieves a permanent object identity hash code. The undefined value might | 1820 // Retrieves a permanent object identity hash code. The undefined value might |
| 1821 // be returned in case no hash was created yet. | 1821 // be returned in case no hash was created yet. |
| 1822 inline Object* GetIdentityHash(); | 1822 inline Object* GetIdentityHash(); |
| 1823 | 1823 |
| 1824 // Retrieves a permanent object identity hash code. May create and store a | 1824 // Retrieves a permanent object identity hash code. May create and store a |
| 1825 // hash code if needed and none exists. | 1825 // hash code if needed and none exists. |
| 1826 inline static Handle<Smi> GetOrCreateIdentityHash( | 1826 inline static Handle<Smi> GetOrCreateIdentityHash( |
| 1827 Handle<JSReceiver> object); | 1827 Handle<JSReceiver> object); |
| 1828 | 1828 |
| 1829 enum KeyCollectionType { OWN_ONLY, INCLUDE_PROTOS }; | 1829 enum KeyCollectionType { OWN_ONLY, INCLUDE_PROTOS }; |
| 1830 enum IncludeSymbolNamedProperties { SKIP_SYMBOLS, INCLUDE_SYMBOLS }; |
| 1830 | 1831 |
| 1831 // Computes the enumerable keys for a JSObject. Used for implementing | 1832 // Computes the enumerable keys for a JSObject. Used for implementing |
| 1832 // "for (n in object) { }". | 1833 // "for (n in object) { }". |
| 1833 MUST_USE_RESULT static MaybeHandle<FixedArray> GetKeys( | 1834 MUST_USE_RESULT static MaybeHandle<FixedArray> GetKeys( |
| 1834 Handle<JSReceiver> object, | 1835 Handle<JSReceiver> object, KeyCollectionType type, |
| 1835 KeyCollectionType type); | 1836 IncludeSymbolNamedProperties include_symbols = SKIP_SYMBOLS); |
| 1836 | 1837 |
| 1837 private: | 1838 private: |
| 1838 DISALLOW_IMPLICIT_CONSTRUCTORS(JSReceiver); | 1839 DISALLOW_IMPLICIT_CONSTRUCTORS(JSReceiver); |
| 1839 }; | 1840 }; |
| 1840 | 1841 |
| 1841 | 1842 |
| 1842 // The JSObject describes real heap allocated JavaScript objects with | 1843 // The JSObject describes real heap allocated JavaScript objects with |
| 1843 // properties. | 1844 // properties. |
| 1844 // Note that the map of JSObject changes during execution to enable inline | 1845 // Note that the map of JSObject changes during execution to enable inline |
| 1845 // caching. | 1846 // caching. |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2023 // Retrieves an AccessorPair property from the given object. Might return | 2024 // Retrieves an AccessorPair property from the given object. Might return |
| 2024 // undefined if the property doesn't exist or is of a different kind. | 2025 // undefined if the property doesn't exist or is of a different kind. |
| 2025 MUST_USE_RESULT static MaybeHandle<Object> GetAccessor( | 2026 MUST_USE_RESULT static MaybeHandle<Object> GetAccessor( |
| 2026 Handle<JSObject> object, | 2027 Handle<JSObject> object, |
| 2027 Handle<Name> name, | 2028 Handle<Name> name, |
| 2028 AccessorComponent component); | 2029 AccessorComponent component); |
| 2029 | 2030 |
| 2030 // Defines an AccessorPair property on the given object. | 2031 // Defines an AccessorPair property on the given object. |
| 2031 // TODO(mstarzinger): Rename to SetAccessor(). | 2032 // TODO(mstarzinger): Rename to SetAccessor(). |
| 2032 static MaybeHandle<Object> DefineAccessor(Handle<JSObject> object, | 2033 static MaybeHandle<Object> DefineAccessor(Handle<JSObject> object, |
| 2033 Handle<Name> name, | 2034 Handle<Object> name, |
| 2034 Handle<Object> getter, | 2035 Handle<Object> getter, |
| 2035 Handle<Object> setter, | 2036 Handle<Object> setter, |
| 2036 PropertyAttributes attributes); | 2037 PropertyAttributes attributes); |
| 2037 | 2038 |
| 2038 // Defines an AccessorInfo property on the given object. | 2039 // Defines an AccessorInfo property on the given object. |
| 2039 MUST_USE_RESULT static MaybeHandle<Object> SetAccessor( | 2040 MUST_USE_RESULT static MaybeHandle<Object> SetAccessor( |
| 2040 Handle<JSObject> object, | 2041 Handle<JSObject> object, |
| 2041 Handle<AccessorInfo> info); | 2042 Handle<AccessorInfo> info); |
| 2042 | 2043 |
| 2043 // The result must be checked first for exceptions. If there's no exception, | 2044 // The result must be checked first for exceptions. If there's no exception, |
| (...skipping 8528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10572 | 10573 |
| 10573 Isolate* isolate_; | 10574 Isolate* isolate_; |
| 10574 Handle<FixedArray> keys_; | 10575 Handle<FixedArray> keys_; |
| 10575 Handle<OrderedHashSet> set_; | 10576 Handle<OrderedHashSet> set_; |
| 10576 int length_; | 10577 int length_; |
| 10577 DISALLOW_COPY_AND_ASSIGN(KeyAccumulator); | 10578 DISALLOW_COPY_AND_ASSIGN(KeyAccumulator); |
| 10578 }; | 10579 }; |
| 10579 } } // namespace v8::internal | 10580 } } // namespace v8::internal |
| 10580 | 10581 |
| 10581 #endif // V8_OBJECTS_H_ | 10582 #endif // V8_OBJECTS_H_ |
| OLD | NEW |