| 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 = {};
|
|
|