Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1869)

Unified Diff: src/objects.h

Issue 2807333003: [api] Add DefineProperty() method that skips interceptors.
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index d0b9dc2832ed855bd70b0bd1377919f72da0eb15..340dc38ed616d3f7fb3eed4206586a0d167f2e5b 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -1964,6 +1964,11 @@ class JSReceiver: public HeapObject {
Handle<Object> object,
Handle<Object> name,
Handle<Object> attributes);
+
+ MUST_USE_RESULT static Object* DefinePropertyWithoutInterceptors(
+ Isolate* isolate, Handle<Object> object, Handle<Object> name,
+ Handle<Object> attributes);
+
MUST_USE_RESULT static MaybeHandle<Object> DefineProperties(
Isolate* isolate, Handle<Object> object, Handle<Object> properties);
@@ -1972,6 +1977,12 @@ class JSReceiver: public HeapObject {
Isolate* isolate, Handle<JSReceiver> object, Handle<Object> key,
PropertyDescriptor* desc, ShouldThrow should_throw);
+ // "virtual" dispatcher to the correct [[DefineOwnPropertyWithoutIntercept]]
+ // implementation.
+ MUST_USE_RESULT static Maybe<bool> DefineOwnPropertyWithoutIntercept(
+ Isolate* isolate, Handle<JSReceiver> object, Handle<Object> key,
+ PropertyDescriptor* desc, ShouldThrow should_throw);
Franzi 2017/04/12 08:58:17 I think you call this function only with dont_thro
+
// ES6 7.3.4 (when passed DONT_THROW)
MUST_USE_RESULT static Maybe<bool> CreateDataProperty(
LookupIterator* it, Handle<Object> value, ShouldThrow should_throw);
@@ -1982,6 +1993,11 @@ class JSReceiver: public HeapObject {
PropertyDescriptor* desc, ShouldThrow should_throw);
MUST_USE_RESULT static Maybe<bool> OrdinaryDefineOwnProperty(
LookupIterator* it, PropertyDescriptor* desc, ShouldThrow should_throw);
+
+ MUST_USE_RESULT static Maybe<bool> OrdinaryDefineOwnPropertyWithoutIntercept(
+ Isolate* isolate, Handle<JSObject> object, Handle<Object> key,
+ PropertyDescriptor* desc, ShouldThrow should_throw);
+
// ES6 9.1.6.2
MUST_USE_RESULT static Maybe<bool> IsCompatiblePropertyDescriptor(
Isolate* isolate, bool extensible, PropertyDescriptor* desc,
@@ -10148,6 +10164,10 @@ class JSProxy: public JSReceiver {
Isolate* isolate, Handle<JSProxy> object, Handle<Object> key,
PropertyDescriptor* desc, ShouldThrow should_throw);
+ MUST_USE_RESULT static Maybe<bool> DefineOwnPropertyWithoutIntercept(
+ Isolate* isolate, Handle<JSProxy> object, Handle<Object> key,
+ PropertyDescriptor* desc, ShouldThrow should_throw);
+
// ES6 9.5.7
MUST_USE_RESULT static Maybe<bool> HasProperty(Isolate* isolate,
Handle<JSProxy> proxy,
@@ -10629,6 +10649,10 @@ class JSTypedArray: public JSArrayBufferView {
Isolate* isolate, Handle<JSTypedArray> o, Handle<Object> key,
PropertyDescriptor* desc, ShouldThrow should_throw);
+ MUST_USE_RESULT static Maybe<bool> DefineOwnPropertyWithoutIntercept(
+ Isolate* isolate, Handle<JSTypedArray> o, Handle<Object> key,
+ PropertyDescriptor* desc, ShouldThrow should_throw);
+
DECLARE_CAST(JSTypedArray)
ExternalArrayType type();
@@ -10747,6 +10771,10 @@ class JSArray: public JSObject {
Isolate* isolate, Handle<JSArray> o, Handle<Object> name,
PropertyDescriptor* desc, ShouldThrow should_throw);
+ MUST_USE_RESULT static Maybe<bool> DefineOwnPropertyWithoutIntercept(
+ Isolate* isolate, Handle<JSArray> o, Handle<Object> name,
+ PropertyDescriptor* desc, ShouldThrow should_throw);
+
static bool AnythingToArrayLength(Isolate* isolate,
Handle<Object> length_object,
uint32_t* output);

Powered by Google App Engine
This is Rietveld 408576698