Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index f800c5d580eace363c14b94ac947af8cec798fc7..e0ddfdb781dba5c52ae1c72cbe9e80f6df204516 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -2252,7 +2252,8 @@ class JSObject: public JSReceiver { |
Handle<Name> name, |
Handle<Object> getter, |
Handle<Object> setter, |
- PropertyAttributes attributes); |
+ PropertyAttributes attributes, |
+ v8::AccessControl access_control = v8::DEFAULT); |
MaybeObject* LookupAccessor(Name* name, AccessorComponent component); |
@@ -2847,7 +2848,8 @@ class JSObject: public JSReceiver { |
Handle<Name> name, |
Handle<Object> getter, |
Handle<Object> setter, |
- PropertyAttributes attributes); |
+ PropertyAttributes attributes, |
+ v8::AccessControl access_control); |
// Try to define a single accessor paying attention to map transitions. |
// Returns false if this was not possible and we have to use the slow case. |
@@ -9677,6 +9679,12 @@ class AccessorPair: public Struct { |
public: |
DECL_ACCESSORS(getter, Object) |
DECL_ACCESSORS(setter, Object) |
+ DECL_ACCESSORS(flag, Smi) |
+ |
+ inline void set_access_flags(v8::AccessControl access_control); |
+ inline bool all_can_read(); |
+ inline bool all_can_write(); |
+ inline bool prohibits_overwriting(); |
static inline AccessorPair* cast(Object* obj); |
@@ -9713,9 +9721,14 @@ class AccessorPair: public Struct { |
static const int kGetterOffset = HeapObject::kHeaderSize; |
static const int kSetterOffset = kGetterOffset + kPointerSize; |
- static const int kSize = kSetterOffset + kPointerSize; |
+ static const int kFlagOffset = kSetterOffset + kPointerSize; |
+ static const int kSize = kFlagOffset + kPointerSize; |
private: |
+ static const int kAllCanReadBit = 0; |
+ static const int kAllCanWriteBit = 1; |
+ static const int kProhibitsOverwritingBit = 2; |
+ |
// Strangely enough, in addition to functions and harmony proxies, the spec |
// requires us to consider undefined as a kind of accessor, too: |
// var obj = {}; |