Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index cde3bf76d4d13296a842fc6927c33580680830d7..64664a5922acca2a97203dc64b1f27146b4c88e8 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -2154,6 +2154,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> SetOwnPropertyIgnoreAttributes( |
Handle<JSObject> object, |
Handle<Name> key, |
@@ -2162,7 +2169,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); |
@@ -10536,6 +10544,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); |
}; |