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

Side by Side Diff: src/objects.h

Issue 306203002: Remove PROHIBITS_OVERWRITING as it is subsumed by non-configurable properties. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Restore include/v8.h declaration to avoid dependencies Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/api.cc ('k') | src/objects.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_OBJECTS_H_ 5 #ifndef V8_OBJECTS_H_
6 #define V8_OBJECTS_H_ 6 #define V8_OBJECTS_H_
7 7
8 #include "allocation.h" 8 #include "allocation.h"
9 #include "assert-scope.h" 9 #include "assert-scope.h"
10 #include "builtins.h" 10 #include "builtins.h"
(...skipping 2423 matching lines...) Expand 10 before | Expand all | Expand 10 after
2434 inline int GetInternalFieldOffset(int index); 2434 inline int GetInternalFieldOffset(int index);
2435 inline Object* GetInternalField(int index); 2435 inline Object* GetInternalField(int index);
2436 inline void SetInternalField(int index, Object* value); 2436 inline void SetInternalField(int index, Object* value);
2437 inline void SetInternalField(int index, Smi* value); 2437 inline void SetInternalField(int index, Smi* value);
2438 2438
2439 // The following lookup functions skip interceptors. 2439 // The following lookup functions skip interceptors.
2440 void LookupOwnRealNamedProperty(Handle<Name> name, LookupResult* result); 2440 void LookupOwnRealNamedProperty(Handle<Name> name, LookupResult* result);
2441 void LookupRealNamedProperty(Handle<Name> name, LookupResult* result); 2441 void LookupRealNamedProperty(Handle<Name> name, LookupResult* result);
2442 void LookupRealNamedPropertyInPrototypes(Handle<Name> name, 2442 void LookupRealNamedPropertyInPrototypes(Handle<Name> name,
2443 LookupResult* result); 2443 LookupResult* result);
2444 void LookupCallbackProperty(Handle<Name> name, LookupResult* result);
2445 2444
2446 // Returns the number of properties on this object filtering out properties 2445 // Returns the number of properties on this object filtering out properties
2447 // with the specified attributes (ignoring interceptors). 2446 // with the specified attributes (ignoring interceptors).
2448 int NumberOfOwnProperties(PropertyAttributes filter = NONE); 2447 int NumberOfOwnProperties(PropertyAttributes filter = NONE);
2449 // Fill in details for properties into storage starting at the specified 2448 // Fill in details for properties into storage starting at the specified
2450 // index. 2449 // index.
2451 void GetOwnPropertyNames( 2450 void GetOwnPropertyNames(
2452 FixedArray* storage, int index, PropertyAttributes filter = NONE); 2451 FixedArray* storage, int index, PropertyAttributes filter = NONE);
2453 2452
2454 // Returns the number of properties on this object filtering out properties 2453 // Returns the number of properties on this object filtering out properties
(...skipping 7911 matching lines...) Expand 10 before | Expand all | Expand 10 after
10366 DECL_ACCESSORS(name, Object) 10365 DECL_ACCESSORS(name, Object)
10367 DECL_ACCESSORS(flag, Smi) 10366 DECL_ACCESSORS(flag, Smi)
10368 DECL_ACCESSORS(expected_receiver_type, Object) 10367 DECL_ACCESSORS(expected_receiver_type, Object)
10369 10368
10370 inline bool all_can_read(); 10369 inline bool all_can_read();
10371 inline void set_all_can_read(bool value); 10370 inline void set_all_can_read(bool value);
10372 10371
10373 inline bool all_can_write(); 10372 inline bool all_can_write();
10374 inline void set_all_can_write(bool value); 10373 inline void set_all_can_write(bool value);
10375 10374
10376 inline bool prohibits_overwriting();
10377 inline void set_prohibits_overwriting(bool value);
10378
10379 inline PropertyAttributes property_attributes(); 10375 inline PropertyAttributes property_attributes();
10380 inline void set_property_attributes(PropertyAttributes attributes); 10376 inline void set_property_attributes(PropertyAttributes attributes);
10381 10377
10382 // Checks whether the given receiver is compatible with this accessor. 10378 // Checks whether the given receiver is compatible with this accessor.
10383 inline bool IsCompatibleReceiver(Object* receiver); 10379 inline bool IsCompatibleReceiver(Object* receiver);
10384 10380
10385 static inline AccessorInfo* cast(Object* obj); 10381 static inline AccessorInfo* cast(Object* obj);
10386 10382
10387 // Dispatched behavior. 10383 // Dispatched behavior.
10388 DECLARE_VERIFIER(AccessorInfo) 10384 DECLARE_VERIFIER(AccessorInfo)
10389 10385
10390 // Append all descriptors to the array that are not already there. 10386 // Append all descriptors to the array that are not already there.
10391 // Return number added. 10387 // Return number added.
10392 static int AppendUnique(Handle<Object> descriptors, 10388 static int AppendUnique(Handle<Object> descriptors,
10393 Handle<FixedArray> array, 10389 Handle<FixedArray> array,
10394 int valid_descriptors); 10390 int valid_descriptors);
10395 10391
10396 static const int kNameOffset = HeapObject::kHeaderSize; 10392 static const int kNameOffset = HeapObject::kHeaderSize;
10397 static const int kFlagOffset = kNameOffset + kPointerSize; 10393 static const int kFlagOffset = kNameOffset + kPointerSize;
10398 static const int kExpectedReceiverTypeOffset = kFlagOffset + kPointerSize; 10394 static const int kExpectedReceiverTypeOffset = kFlagOffset + kPointerSize;
10399 static const int kSize = kExpectedReceiverTypeOffset + kPointerSize; 10395 static const int kSize = kExpectedReceiverTypeOffset + kPointerSize;
10400 10396
10401 private: 10397 private:
10402 // Bit positions in flag. 10398 // Bit positions in flag.
10403 static const int kAllCanReadBit = 0; 10399 static const int kAllCanReadBit = 0;
10404 static const int kAllCanWriteBit = 1; 10400 static const int kAllCanWriteBit = 1;
10405 static const int kProhibitsOverwritingBit = 2; 10401 class AttributesField: public BitField<PropertyAttributes, 2, 3> {};
10406 class AttributesField: public BitField<PropertyAttributes, 3, 3> {};
10407 10402
10408 DISALLOW_IMPLICIT_CONSTRUCTORS(AccessorInfo); 10403 DISALLOW_IMPLICIT_CONSTRUCTORS(AccessorInfo);
10409 }; 10404 };
10410 10405
10411 10406
10412 enum AccessorDescriptorType { 10407 enum AccessorDescriptorType {
10413 kDescriptorBitmaskCompare, 10408 kDescriptorBitmaskCompare,
10414 kDescriptorPointerCompare, 10409 kDescriptorPointerCompare,
10415 kDescriptorPrimitiveValue, 10410 kDescriptorPrimitiveValue,
10416 kDescriptorObjectDereference, 10411 kDescriptorObjectDereference,
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
10561 // failure. 10556 // failure.
10562 class AccessorPair: public Struct { 10557 class AccessorPair: public Struct {
10563 public: 10558 public:
10564 DECL_ACCESSORS(getter, Object) 10559 DECL_ACCESSORS(getter, Object)
10565 DECL_ACCESSORS(setter, Object) 10560 DECL_ACCESSORS(setter, Object)
10566 DECL_ACCESSORS(access_flags, Smi) 10561 DECL_ACCESSORS(access_flags, Smi)
10567 10562
10568 inline void set_access_flags(v8::AccessControl access_control); 10563 inline void set_access_flags(v8::AccessControl access_control);
10569 inline bool all_can_read(); 10564 inline bool all_can_read();
10570 inline bool all_can_write(); 10565 inline bool all_can_write();
10571 inline bool prohibits_overwriting();
10572 10566
10573 static inline AccessorPair* cast(Object* obj); 10567 static inline AccessorPair* cast(Object* obj);
10574 10568
10575 static Handle<AccessorPair> Copy(Handle<AccessorPair> pair); 10569 static Handle<AccessorPair> Copy(Handle<AccessorPair> pair);
10576 10570
10577 Object* get(AccessorComponent component) { 10571 Object* get(AccessorComponent component) {
10578 return component == ACCESSOR_GETTER ? getter() : setter(); 10572 return component == ACCESSOR_GETTER ? getter() : setter();
10579 } 10573 }
10580 10574
10581 void set(AccessorComponent component, Object* value) { 10575 void set(AccessorComponent component, Object* value) {
(...skipping 22 matching lines...) Expand all
10604 DECLARE_VERIFIER(AccessorPair) 10598 DECLARE_VERIFIER(AccessorPair)
10605 10599
10606 static const int kGetterOffset = HeapObject::kHeaderSize; 10600 static const int kGetterOffset = HeapObject::kHeaderSize;
10607 static const int kSetterOffset = kGetterOffset + kPointerSize; 10601 static const int kSetterOffset = kGetterOffset + kPointerSize;
10608 static const int kAccessFlagsOffset = kSetterOffset + kPointerSize; 10602 static const int kAccessFlagsOffset = kSetterOffset + kPointerSize;
10609 static const int kSize = kAccessFlagsOffset + kPointerSize; 10603 static const int kSize = kAccessFlagsOffset + kPointerSize;
10610 10604
10611 private: 10605 private:
10612 static const int kAllCanReadBit = 0; 10606 static const int kAllCanReadBit = 0;
10613 static const int kAllCanWriteBit = 1; 10607 static const int kAllCanWriteBit = 1;
10614 static const int kProhibitsOverwritingBit = 2;
10615 10608
10616 // Strangely enough, in addition to functions and harmony proxies, the spec 10609 // Strangely enough, in addition to functions and harmony proxies, the spec
10617 // requires us to consider undefined as a kind of accessor, too: 10610 // requires us to consider undefined as a kind of accessor, too:
10618 // var obj = {}; 10611 // var obj = {};
10619 // Object.defineProperty(obj, "foo", {get: undefined}); 10612 // Object.defineProperty(obj, "foo", {get: undefined});
10620 // assertTrue("foo" in obj); 10613 // assertTrue("foo" in obj);
10621 bool IsJSAccessor(Object* obj) { 10614 bool IsJSAccessor(Object* obj) {
10622 return obj->IsSpecFunction() || obj->IsUndefined(); 10615 return obj->IsSpecFunction() || obj->IsUndefined();
10623 } 10616 }
10624 10617
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
11074 } else { 11067 } else {
11075 value &= ~(1 << bit_position); 11068 value &= ~(1 << bit_position);
11076 } 11069 }
11077 return value; 11070 return value;
11078 } 11071 }
11079 }; 11072 };
11080 11073
11081 } } // namespace v8::internal 11074 } } // namespace v8::internal
11082 11075
11083 #endif // V8_OBJECTS_H_ 11076 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/api.cc ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698