Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index 12f2ee0e5ce980e9009a80d944bb30a92a2b3828..43f2d6e2d975634aac49caeba8e956a7658c2061 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -2129,14 +2129,6 @@ class JSObject: public JSReceiver { |
Handle<Object> structure, |
Handle<Name> name); |
- MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithCallback( |
- Handle<JSObject> object, |
- Handle<Object> structure, |
- Handle<Name> name, |
- Handle<Object> value, |
- Handle<JSObject> holder, |
- StrictMode strict_mode); |
- |
MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithInterceptor( |
Handle<JSObject> object, |
Handle<Name> name, |
@@ -2153,6 +2145,13 @@ class JSObject: public JSReceiver { |
StrictMode strict_mode, |
StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); |
+ // SetLocalPropertyIgnoreAttributes converts callbacks to fields. We need to |
+ // grant an exemption to ExecutableAccessor callbacks in some cases. |
+ enum ExecutableAccessorInfoHandling { |
+ DEFAULT_HANDLING, |
+ DONT_FORCE_FIELD |
+ }; |
+ |
MUST_USE_RESULT static MaybeHandle<Object> SetLocalPropertyIgnoreAttributes( |
Handle<JSObject> object, |
Handle<Name> key, |
@@ -2161,7 +2160,8 @@ class JSObject: public JSReceiver { |
ValueType value_type = OPTIMAL_REPRESENTATION, |
StoreMode mode = ALLOW_AS_CONSTANT, |
ExtensibilityCheck extensibility_check = PERFORM_EXTENSIBILITY_CHECK, |
- StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); |
+ StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED, |
+ ExecutableAccessorInfoHandling handling = DEFAULT_HANDLING); |
static inline Handle<String> ExpectedTransitionKey(Handle<Map> map); |
static inline Handle<Map> ExpectedTransitionTarget(Handle<Map> map); |
@@ -2667,6 +2667,14 @@ class JSObject: public JSReceiver { |
static void UpdateAllocationSite(Handle<JSObject> object, |
ElementsKind to_kind); |
+ MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithCallback( |
+ Handle<JSObject> object, |
+ Handle<Object> structure, |
+ Handle<Name> name, |
+ Handle<Object> value, |
+ Handle<JSObject> holder, |
+ StrictMode strict_mode); |
+ |
// Used from Object::GetProperty(). |
MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithFailedAccessCheck( |
Handle<JSObject> object, |
@@ -10591,6 +10599,8 @@ class ExecutableAccessorInfo: public AccessorInfo { |
static const int kDataOffset = kSetterOffset + kPointerSize; |
static const int kSize = kDataOffset + kPointerSize; |
+ inline void clear_setter(); |
+ |
private: |
DISALLOW_IMPLICIT_CONSTRUCTORS(ExecutableAccessorInfo); |
}; |