| 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 1964 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1975 LanguageMode language_mode = SLOPPY); | 1975 LanguageMode language_mode = SLOPPY); |
| 1976 MUST_USE_RESULT static Maybe<bool> DeleteProperty( | 1976 MUST_USE_RESULT static Maybe<bool> DeleteProperty( |
| 1977 Handle<JSReceiver> object, Handle<Name> name, | 1977 Handle<JSReceiver> object, Handle<Name> name, |
| 1978 LanguageMode language_mode = SLOPPY); | 1978 LanguageMode language_mode = SLOPPY); |
| 1979 MUST_USE_RESULT static Maybe<bool> DeleteProperty(LookupIterator* it, | 1979 MUST_USE_RESULT static Maybe<bool> DeleteProperty(LookupIterator* it, |
| 1980 LanguageMode language_mode); | 1980 LanguageMode language_mode); |
| 1981 MUST_USE_RESULT static Maybe<bool> DeleteElement( | 1981 MUST_USE_RESULT static Maybe<bool> DeleteElement( |
| 1982 Handle<JSReceiver> object, uint32_t index, | 1982 Handle<JSReceiver> object, uint32_t index, |
| 1983 LanguageMode language_mode = SLOPPY); | 1983 LanguageMode language_mode = SLOPPY); |
| 1984 | 1984 |
| 1985 MUST_USE_RESULT static Object* DefineProperty(Isolate* isolate, | 1985 MUST_USE_RESULT static Object* DefineProperty( |
| 1986 Handle<Object> object, | 1986 Isolate* isolate, Handle<Object> object, Handle<Object> name, |
| 1987 Handle<Object> name, | 1987 Handle<Object> attributes, |
| 1988 Handle<Object> attributes); | 1988 CallInterceptors call_interceptors = CallInterceptors::kDontSkip); |
| 1989 |
| 1989 MUST_USE_RESULT static MaybeHandle<Object> DefineProperties( | 1990 MUST_USE_RESULT static MaybeHandle<Object> DefineProperties( |
| 1990 Isolate* isolate, Handle<Object> object, Handle<Object> properties); | 1991 Isolate* isolate, Handle<Object> object, Handle<Object> properties); |
| 1991 | 1992 |
| 1992 // "virtual" dispatcher to the correct [[DefineOwnProperty]] implementation. | 1993 // "virtual" dispatcher to the correct [[DefineOwnProperty]] implementation. |
| 1993 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( | 1994 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( |
| 1994 Isolate* isolate, Handle<JSReceiver> object, Handle<Object> key, | 1995 Isolate* isolate, Handle<JSReceiver> object, Handle<Object> key, |
| 1995 PropertyDescriptor* desc, ShouldThrow should_throw); | 1996 PropertyDescriptor* desc, ShouldThrow should_throw, |
| 1997 CallInterceptors call_interceptors = CallInterceptors::kDontSkip); |
| 1996 | 1998 |
| 1997 // ES6 7.3.4 (when passed DONT_THROW) | 1999 // ES6 7.3.4 (when passed DONT_THROW) |
| 1998 MUST_USE_RESULT static Maybe<bool> CreateDataProperty( | 2000 MUST_USE_RESULT static Maybe<bool> CreateDataProperty( |
| 1999 LookupIterator* it, Handle<Object> value, ShouldThrow should_throw); | 2001 LookupIterator* it, Handle<Object> value, ShouldThrow should_throw); |
| 2000 | 2002 |
| 2001 // ES6 9.1.6.1 | 2003 // ES6 9.1.6.1 |
| 2002 MUST_USE_RESULT static Maybe<bool> OrdinaryDefineOwnProperty( | 2004 MUST_USE_RESULT static Maybe<bool> OrdinaryDefineOwnProperty( |
| 2003 Isolate* isolate, Handle<JSObject> object, Handle<Object> key, | 2005 Isolate* isolate, Handle<JSObject> object, Handle<Object> key, |
| 2004 PropertyDescriptor* desc, ShouldThrow should_throw); | 2006 PropertyDescriptor* desc, ShouldThrow should_throw, |
| 2007 CallInterceptors call_interceptors = CallInterceptors::kDontSkip); |
| 2005 MUST_USE_RESULT static Maybe<bool> OrdinaryDefineOwnProperty( | 2008 MUST_USE_RESULT static Maybe<bool> OrdinaryDefineOwnProperty( |
| 2006 LookupIterator* it, PropertyDescriptor* desc, ShouldThrow should_throw); | 2009 LookupIterator* it, PropertyDescriptor* desc, ShouldThrow should_throw); |
| 2010 |
| 2007 // ES6 9.1.6.2 | 2011 // ES6 9.1.6.2 |
| 2008 MUST_USE_RESULT static Maybe<bool> IsCompatiblePropertyDescriptor( | 2012 MUST_USE_RESULT static Maybe<bool> IsCompatiblePropertyDescriptor( |
| 2009 Isolate* isolate, bool extensible, PropertyDescriptor* desc, | 2013 Isolate* isolate, bool extensible, PropertyDescriptor* desc, |
| 2010 PropertyDescriptor* current, Handle<Name> property_name, | 2014 PropertyDescriptor* current, Handle<Name> property_name, |
| 2011 ShouldThrow should_throw); | 2015 ShouldThrow should_throw); |
| 2012 // ES6 9.1.6.3 | 2016 // ES6 9.1.6.3 |
| 2013 // |it| can be NULL in cases where the ES spec passes |undefined| as the | 2017 // |it| can be NULL in cases where the ES spec passes |undefined| as the |
| 2014 // receiver. Exactly one of |it| and |property_name| must be provided. | 2018 // receiver. Exactly one of |it| and |property_name| must be provided. |
| 2015 MUST_USE_RESULT static Maybe<bool> ValidateAndApplyPropertyDescriptor( | 2019 MUST_USE_RESULT static Maybe<bool> ValidateAndApplyPropertyDescriptor( |
| 2016 Isolate* isolate, LookupIterator* it, bool extensible, | 2020 Isolate* isolate, LookupIterator* it, bool extensible, |
| (...skipping 6208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8225 Handle<JSProxy> proxy, ShouldThrow should_throw); | 8229 Handle<JSProxy> proxy, ShouldThrow should_throw); |
| 8226 | 8230 |
| 8227 // ES6 9.5.5 | 8231 // ES6 9.5.5 |
| 8228 MUST_USE_RESULT static Maybe<bool> GetOwnPropertyDescriptor( | 8232 MUST_USE_RESULT static Maybe<bool> GetOwnPropertyDescriptor( |
| 8229 Isolate* isolate, Handle<JSProxy> proxy, Handle<Name> name, | 8233 Isolate* isolate, Handle<JSProxy> proxy, Handle<Name> name, |
| 8230 PropertyDescriptor* desc); | 8234 PropertyDescriptor* desc); |
| 8231 | 8235 |
| 8232 // ES6 9.5.6 | 8236 // ES6 9.5.6 |
| 8233 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( | 8237 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( |
| 8234 Isolate* isolate, Handle<JSProxy> object, Handle<Object> key, | 8238 Isolate* isolate, Handle<JSProxy> object, Handle<Object> key, |
| 8235 PropertyDescriptor* desc, ShouldThrow should_throw); | 8239 PropertyDescriptor* desc, ShouldThrow should_throw, |
| 8240 CallInterceptors call_interceptors = CallInterceptors::kDontSkip); |
| 8236 | 8241 |
| 8237 // ES6 9.5.7 | 8242 // ES6 9.5.7 |
| 8238 MUST_USE_RESULT static Maybe<bool> HasProperty(Isolate* isolate, | 8243 MUST_USE_RESULT static Maybe<bool> HasProperty(Isolate* isolate, |
| 8239 Handle<JSProxy> proxy, | 8244 Handle<JSProxy> proxy, |
| 8240 Handle<Name> name); | 8245 Handle<Name> name); |
| 8241 | 8246 |
| 8242 // ES6 9.5.8 | 8247 // ES6 9.5.8 |
| 8243 MUST_USE_RESULT static MaybeHandle<Object> GetProperty( | 8248 MUST_USE_RESULT static MaybeHandle<Object> GetProperty( |
| 8244 Isolate* isolate, Handle<JSProxy> proxy, Handle<Name> name, | 8249 Isolate* isolate, Handle<JSProxy> proxy, Handle<Name> name, |
| 8245 Handle<Object> receiver, bool* was_found); | 8250 Handle<Object> receiver, bool* was_found); |
| (...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8633 | 8638 |
| 8634 class JSTypedArray: public JSArrayBufferView { | 8639 class JSTypedArray: public JSArrayBufferView { |
| 8635 public: | 8640 public: |
| 8636 // [length]: length of typed array in elements. | 8641 // [length]: length of typed array in elements. |
| 8637 DECL_ACCESSORS(length, Object) | 8642 DECL_ACCESSORS(length, Object) |
| 8638 inline uint32_t length_value() const; | 8643 inline uint32_t length_value() const; |
| 8639 | 8644 |
| 8640 // ES6 9.4.5.3 | 8645 // ES6 9.4.5.3 |
| 8641 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( | 8646 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( |
| 8642 Isolate* isolate, Handle<JSTypedArray> o, Handle<Object> key, | 8647 Isolate* isolate, Handle<JSTypedArray> o, Handle<Object> key, |
| 8643 PropertyDescriptor* desc, ShouldThrow should_throw); | 8648 PropertyDescriptor* desc, ShouldThrow should_throw, |
| 8649 CallInterceptors call_interceptors = CallInterceptors::kDontSkip); |
| 8644 | 8650 |
| 8645 DECLARE_CAST(JSTypedArray) | 8651 DECLARE_CAST(JSTypedArray) |
| 8646 | 8652 |
| 8647 ExternalArrayType type(); | 8653 ExternalArrayType type(); |
| 8648 V8_EXPORT_PRIVATE size_t element_size(); | 8654 V8_EXPORT_PRIVATE size_t element_size(); |
| 8649 | 8655 |
| 8650 Handle<JSArrayBuffer> GetBuffer(); | 8656 Handle<JSArrayBuffer> GetBuffer(); |
| 8651 | 8657 |
| 8652 static inline MaybeHandle<JSTypedArray> Validate(Isolate* isolate, | 8658 static inline MaybeHandle<JSTypedArray> Validate(Isolate* isolate, |
| 8653 Handle<Object> receiver, | 8659 Handle<Object> receiver, |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8761 | 8767 |
| 8762 static void SetLength(Handle<JSArray> array, uint32_t length); | 8768 static void SetLength(Handle<JSArray> array, uint32_t length); |
| 8763 | 8769 |
| 8764 // Set the content of the array to the content of storage. | 8770 // Set the content of the array to the content of storage. |
| 8765 static inline void SetContent(Handle<JSArray> array, | 8771 static inline void SetContent(Handle<JSArray> array, |
| 8766 Handle<FixedArrayBase> storage); | 8772 Handle<FixedArrayBase> storage); |
| 8767 | 8773 |
| 8768 // ES6 9.4.2.1 | 8774 // ES6 9.4.2.1 |
| 8769 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( | 8775 MUST_USE_RESULT static Maybe<bool> DefineOwnProperty( |
| 8770 Isolate* isolate, Handle<JSArray> o, Handle<Object> name, | 8776 Isolate* isolate, Handle<JSArray> o, Handle<Object> name, |
| 8771 PropertyDescriptor* desc, ShouldThrow should_throw); | 8777 PropertyDescriptor* desc, ShouldThrow should_throw, |
| 8778 CallInterceptors call_interceptors = CallInterceptors::kDontSkip); |
| 8772 | 8779 |
| 8773 static bool AnythingToArrayLength(Isolate* isolate, | 8780 static bool AnythingToArrayLength(Isolate* isolate, |
| 8774 Handle<Object> length_object, | 8781 Handle<Object> length_object, |
| 8775 uint32_t* output); | 8782 uint32_t* output); |
| 8776 MUST_USE_RESULT static Maybe<bool> ArraySetLength(Isolate* isolate, | 8783 MUST_USE_RESULT static Maybe<bool> ArraySetLength( |
| 8777 Handle<JSArray> a, | 8784 Isolate* isolate, Handle<JSArray> a, PropertyDescriptor* desc, |
| 8778 PropertyDescriptor* desc, | 8785 ShouldThrow should_throw, |
| 8779 ShouldThrow should_throw); | 8786 CallInterceptors call_interceptors = CallInterceptors::kDontSkip); |
| 8780 | 8787 |
| 8781 // Checks whether the Array has the current realm's Array.prototype as its | 8788 // Checks whether the Array has the current realm's Array.prototype as its |
| 8782 // prototype. This function is best-effort and only gives a conservative | 8789 // prototype. This function is best-effort and only gives a conservative |
| 8783 // approximation, erring on the side of false, in particular with respect | 8790 // approximation, erring on the side of false, in particular with respect |
| 8784 // to Proxies and objects with a hidden prototype. | 8791 // to Proxies and objects with a hidden prototype. |
| 8785 inline bool HasArrayPrototype(Isolate* isolate); | 8792 inline bool HasArrayPrototype(Isolate* isolate); |
| 8786 | 8793 |
| 8787 DECLARE_CAST(JSArray) | 8794 DECLARE_CAST(JSArray) |
| 8788 | 8795 |
| 8789 // Dispatched behavior. | 8796 // Dispatched behavior. |
| (...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9342 } | 9349 } |
| 9343 }; | 9350 }; |
| 9344 | 9351 |
| 9345 | 9352 |
| 9346 } // NOLINT, false-positive due to second-order macros. | 9353 } // NOLINT, false-positive due to second-order macros. |
| 9347 } // NOLINT, false-positive due to second-order macros. | 9354 } // NOLINT, false-positive due to second-order macros. |
| 9348 | 9355 |
| 9349 #include "src/objects/object-macros-undef.h" | 9356 #include "src/objects/object-macros-undef.h" |
| 9350 | 9357 |
| 9351 #endif // V8_OBJECTS_H_ | 9358 #endif // V8_OBJECTS_H_ |
| OLD | NEW |