OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 1942 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1953 LanguageMode language_mode = SLOPPY); | 1953 LanguageMode language_mode = SLOPPY); |
1954 MUST_USE_RESULT static Maybe<bool> DeleteProperty( | 1954 MUST_USE_RESULT static Maybe<bool> DeleteProperty( |
1955 Handle<JSReceiver> object, Handle<Name> name, | 1955 Handle<JSReceiver> object, Handle<Name> name, |
1956 LanguageMode language_mode = SLOPPY); | 1956 LanguageMode language_mode = SLOPPY); |
1957 MUST_USE_RESULT static Maybe<bool> DeleteProperty(LookupIterator* it, | 1957 MUST_USE_RESULT static Maybe<bool> DeleteProperty(LookupIterator* it, |
1958 LanguageMode language_mode); | 1958 LanguageMode language_mode); |
1959 MUST_USE_RESULT static Maybe<bool> DeleteElement( | 1959 MUST_USE_RESULT static Maybe<bool> DeleteElement( |
1960 Handle<JSReceiver> object, uint32_t index, | 1960 Handle<JSReceiver> object, uint32_t index, |
1961 LanguageMode language_mode = SLOPPY); | 1961 LanguageMode language_mode = SLOPPY); |
1962 | 1962 |
1963 MUST_USE_RESULT static Object* DefineProperty(Isolate* isolate, | 1963 MUST_USE_RESULT static Object* DefineProperty( |
1964 Handle<Object> object, | 1964 Isolate* isolate, Handle<Object> object, Handle<Object> name, |
1965 Handle<Object> name, | 1965 Handle<Object> attributes, bool bypass_interceptor = false); |
1966 Handle<Object> attributes); | 1966 |
1967 MUST_USE_RESULT static MaybeHandle<Object> DefineProperties( | 1967 MUST_USE_RESULT static MaybeHandle<Object> DefineProperties( |
1968 Isolate* isolate, Handle<Object> object, Handle<Object> properties); | 1968 Isolate* isolate, Handle<Object> object, Handle<Object> properties); |
1969 | 1969 |
1970 // "virtual" dispatcher to the correct [[DefineOwnProperty]] implementation. | 1970 // "virtual" dispatcher to the correct [[DefineOwnProperty]] implementation. |
1971 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( | 1971 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( |
1972 Isolate* isolate, Handle<JSReceiver> object, Handle<Object> key, | 1972 Isolate* isolate, Handle<JSReceiver> object, Handle<Object> key, |
1973 PropertyDescriptor* desc, ShouldThrow should_throw); | 1973 PropertyDescriptor* desc, ShouldThrow should_throw, |
| 1974 bool bypass_interceptor = false); |
1974 | 1975 |
1975 // ES6 7.3.4 (when passed DONT_THROW) | 1976 // ES6 7.3.4 (when passed DONT_THROW) |
1976 MUST_USE_RESULT static Maybe<bool> CreateDataProperty( | 1977 MUST_USE_RESULT static Maybe<bool> CreateDataProperty( |
1977 LookupIterator* it, Handle<Object> value, ShouldThrow should_throw); | 1978 LookupIterator* it, Handle<Object> value, ShouldThrow should_throw); |
1978 | 1979 |
1979 // ES6 9.1.6.1 | 1980 // ES6 9.1.6.1 |
1980 MUST_USE_RESULT static Maybe<bool> OrdinaryDefineOwnProperty( | 1981 MUST_USE_RESULT static Maybe<bool> OrdinaryDefineOwnProperty( |
1981 Isolate* isolate, Handle<JSObject> object, Handle<Object> key, | 1982 Isolate* isolate, Handle<JSObject> object, Handle<Object> key, |
1982 PropertyDescriptor* desc, ShouldThrow should_throw); | 1983 PropertyDescriptor* desc, ShouldThrow should_throw, |
| 1984 bool bypass_interceptor = false); |
1983 MUST_USE_RESULT static Maybe<bool> OrdinaryDefineOwnProperty( | 1985 MUST_USE_RESULT static Maybe<bool> OrdinaryDefineOwnProperty( |
1984 LookupIterator* it, PropertyDescriptor* desc, ShouldThrow should_throw); | 1986 LookupIterator* it, PropertyDescriptor* desc, ShouldThrow should_throw); |
| 1987 |
1985 // ES6 9.1.6.2 | 1988 // ES6 9.1.6.2 |
1986 MUST_USE_RESULT static Maybe<bool> IsCompatiblePropertyDescriptor( | 1989 MUST_USE_RESULT static Maybe<bool> IsCompatiblePropertyDescriptor( |
1987 Isolate* isolate, bool extensible, PropertyDescriptor* desc, | 1990 Isolate* isolate, bool extensible, PropertyDescriptor* desc, |
1988 PropertyDescriptor* current, Handle<Name> property_name, | 1991 PropertyDescriptor* current, Handle<Name> property_name, |
1989 ShouldThrow should_throw); | 1992 ShouldThrow should_throw); |
1990 // ES6 9.1.6.3 | 1993 // ES6 9.1.6.3 |
1991 // |it| can be NULL in cases where the ES spec passes |undefined| as the | 1994 // |it| can be NULL in cases where the ES spec passes |undefined| as the |
1992 // receiver. Exactly one of |it| and |property_name| must be provided. | 1995 // receiver. Exactly one of |it| and |property_name| must be provided. |
1993 MUST_USE_RESULT static Maybe<bool> ValidateAndApplyPropertyDescriptor( | 1996 MUST_USE_RESULT static Maybe<bool> ValidateAndApplyPropertyDescriptor( |
1994 Isolate* isolate, LookupIterator* it, bool extensible, | 1997 Isolate* isolate, LookupIterator* it, bool extensible, |
(...skipping 8144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10139 Handle<JSProxy> proxy, ShouldThrow should_throw); | 10142 Handle<JSProxy> proxy, ShouldThrow should_throw); |
10140 | 10143 |
10141 // ES6 9.5.5 | 10144 // ES6 9.5.5 |
10142 MUST_USE_RESULT static Maybe<bool> GetOwnPropertyDescriptor( | 10145 MUST_USE_RESULT static Maybe<bool> GetOwnPropertyDescriptor( |
10143 Isolate* isolate, Handle<JSProxy> proxy, Handle<Name> name, | 10146 Isolate* isolate, Handle<JSProxy> proxy, Handle<Name> name, |
10144 PropertyDescriptor* desc); | 10147 PropertyDescriptor* desc); |
10145 | 10148 |
10146 // ES6 9.5.6 | 10149 // ES6 9.5.6 |
10147 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( | 10150 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( |
10148 Isolate* isolate, Handle<JSProxy> object, Handle<Object> key, | 10151 Isolate* isolate, Handle<JSProxy> object, Handle<Object> key, |
10149 PropertyDescriptor* desc, ShouldThrow should_throw); | 10152 PropertyDescriptor* desc, ShouldThrow should_throw, |
| 10153 bool bypass_interceptor = false); |
10150 | 10154 |
10151 // ES6 9.5.7 | 10155 // ES6 9.5.7 |
10152 MUST_USE_RESULT static Maybe<bool> HasProperty(Isolate* isolate, | 10156 MUST_USE_RESULT static Maybe<bool> HasProperty(Isolate* isolate, |
10153 Handle<JSProxy> proxy, | 10157 Handle<JSProxy> proxy, |
10154 Handle<Name> name); | 10158 Handle<Name> name); |
10155 | 10159 |
10156 // ES6 9.5.8 | 10160 // ES6 9.5.8 |
10157 MUST_USE_RESULT static MaybeHandle<Object> GetProperty( | 10161 MUST_USE_RESULT static MaybeHandle<Object> GetProperty( |
10158 Isolate* isolate, Handle<JSProxy> proxy, Handle<Name> name, | 10162 Isolate* isolate, Handle<JSProxy> proxy, Handle<Name> name, |
10159 Handle<Object> receiver, bool* was_found); | 10163 Handle<Object> receiver, bool* was_found); |
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10620 | 10624 |
10621 class JSTypedArray: public JSArrayBufferView { | 10625 class JSTypedArray: public JSArrayBufferView { |
10622 public: | 10626 public: |
10623 // [length]: length of typed array in elements. | 10627 // [length]: length of typed array in elements. |
10624 DECL_ACCESSORS(length, Object) | 10628 DECL_ACCESSORS(length, Object) |
10625 inline uint32_t length_value() const; | 10629 inline uint32_t length_value() const; |
10626 | 10630 |
10627 // ES6 9.4.5.3 | 10631 // ES6 9.4.5.3 |
10628 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( | 10632 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( |
10629 Isolate* isolate, Handle<JSTypedArray> o, Handle<Object> key, | 10633 Isolate* isolate, Handle<JSTypedArray> o, Handle<Object> key, |
10630 PropertyDescriptor* desc, ShouldThrow should_throw); | 10634 PropertyDescriptor* desc, ShouldThrow should_throw, |
| 10635 bool bypass_interceptor = false); |
10631 | 10636 |
10632 DECLARE_CAST(JSTypedArray) | 10637 DECLARE_CAST(JSTypedArray) |
10633 | 10638 |
10634 ExternalArrayType type(); | 10639 ExternalArrayType type(); |
10635 V8_EXPORT_PRIVATE size_t element_size(); | 10640 V8_EXPORT_PRIVATE size_t element_size(); |
10636 | 10641 |
10637 Handle<JSArrayBuffer> GetBuffer(); | 10642 Handle<JSArrayBuffer> GetBuffer(); |
10638 | 10643 |
10639 static inline MaybeHandle<JSTypedArray> Validate(Isolate* isolate, | 10644 static inline MaybeHandle<JSTypedArray> Validate(Isolate* isolate, |
10640 Handle<Object> receiver, | 10645 Handle<Object> receiver, |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10738 | 10743 |
10739 static void SetLength(Handle<JSArray> array, uint32_t length); | 10744 static void SetLength(Handle<JSArray> array, uint32_t length); |
10740 | 10745 |
10741 // Set the content of the array to the content of storage. | 10746 // Set the content of the array to the content of storage. |
10742 static inline void SetContent(Handle<JSArray> array, | 10747 static inline void SetContent(Handle<JSArray> array, |
10743 Handle<FixedArrayBase> storage); | 10748 Handle<FixedArrayBase> storage); |
10744 | 10749 |
10745 // ES6 9.4.2.1 | 10750 // ES6 9.4.2.1 |
10746 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( | 10751 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( |
10747 Isolate* isolate, Handle<JSArray> o, Handle<Object> name, | 10752 Isolate* isolate, Handle<JSArray> o, Handle<Object> name, |
10748 PropertyDescriptor* desc, ShouldThrow should_throw); | 10753 PropertyDescriptor* desc, ShouldThrow should_throw, |
| 10754 bool bypass_interceptor = false); |
10749 | 10755 |
10750 static bool AnythingToArrayLength(Isolate* isolate, | 10756 static bool AnythingToArrayLength(Isolate* isolate, |
10751 Handle<Object> length_object, | 10757 Handle<Object> length_object, |
10752 uint32_t* output); | 10758 uint32_t* output); |
10753 MUST_USE_RESULT static Maybe<bool> ArraySetLength(Isolate* isolate, | 10759 MUST_USE_RESULT static Maybe<bool> ArraySetLength(Isolate* isolate, |
10754 Handle<JSArray> a, | 10760 Handle<JSArray> a, |
10755 PropertyDescriptor* desc, | 10761 PropertyDescriptor* desc, |
10756 ShouldThrow should_throw); | 10762 ShouldThrow should_throw, |
| 10763 bool bypass_interceptor); |
10757 | 10764 |
10758 // Checks whether the Array has the current realm's Array.prototype as its | 10765 // Checks whether the Array has the current realm's Array.prototype as its |
10759 // prototype. This function is best-effort and only gives a conservative | 10766 // prototype. This function is best-effort and only gives a conservative |
10760 // approximation, erring on the side of false, in particular with respect | 10767 // approximation, erring on the side of false, in particular with respect |
10761 // to Proxies and objects with a hidden prototype. | 10768 // to Proxies and objects with a hidden prototype. |
10762 inline bool HasArrayPrototype(Isolate* isolate); | 10769 inline bool HasArrayPrototype(Isolate* isolate); |
10763 | 10770 |
10764 DECLARE_CAST(JSArray) | 10771 DECLARE_CAST(JSArray) |
10765 | 10772 |
10766 // Dispatched behavior. | 10773 // Dispatched behavior. |
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11439 } | 11446 } |
11440 }; | 11447 }; |
11441 | 11448 |
11442 | 11449 |
11443 } // NOLINT, false-positive due to second-order macros. | 11450 } // NOLINT, false-positive due to second-order macros. |
11444 } // NOLINT, false-positive due to second-order macros. | 11451 } // NOLINT, false-positive due to second-order macros. |
11445 | 11452 |
11446 #include "src/objects/object-macros-undef.h" | 11453 #include "src/objects/object-macros-undef.h" |
11447 | 11454 |
11448 #endif // V8_OBJECTS_H_ | 11455 #endif // V8_OBJECTS_H_ |
OLD | NEW |