diff options
author | isaacs <i@izs.me> | 2012-02-23 16:35:46 -0800 |
---|---|---|
committer | isaacs <i@izs.me> | 2012-02-27 12:11:09 -0800 |
commit | f4641bd4de566145e99b05c47c8f3d629b0223cd (patch) | |
tree | 2d0ccb1c338bec65881b30c49707d9e688fed154 /deps/v8/src/objects.h | |
parent | 82ad1f87fa99b420a97cc9bfae727fce0b1bf8a4 (diff) | |
download | node-f4641bd4de566145e99b05c47c8f3d629b0223cd.tar.gz |
Update v8 to 3.9.9
Diffstat (limited to 'deps/v8/src/objects.h')
-rw-r--r-- | deps/v8/src/objects.h | 278 |
1 files changed, 189 insertions, 89 deletions
diff --git a/deps/v8/src/objects.h b/deps/v8/src/objects.h index bc18bf8fa..d870ccecb 100644 --- a/deps/v8/src/objects.h +++ b/deps/v8/src/objects.h @@ -168,6 +168,11 @@ enum CompareMapMode { ALLOW_ELEMENT_TRANSITION_MAPS }; +enum KeyedAccessGrowMode { + DO_NOT_ALLOW_JSARRAY_GROWTH, + ALLOW_JSARRAY_GROWTH +}; + const int kElementsKindCount = LAST_ELEMENTS_KIND - FIRST_ELEMENTS_KIND + 1; void PrintElementsKind(FILE* out, ElementsKind kind); @@ -434,7 +439,8 @@ const int kVariableSizeSentinel = 0; V(TYPE_SWITCH_INFO, TypeSwitchInfo, type_switch_info) \ V(SCRIPT, Script, script) \ V(CODE_CACHE, CodeCache, code_cache) \ - V(POLYMORPHIC_CODE_CACHE, PolymorphicCodeCache, polymorphic_code_cache) + V(POLYMORPHIC_CODE_CACHE, PolymorphicCodeCache, polymorphic_code_cache) \ + V(TYPE_FEEDBACK_INFO, TypeFeedbackInfo, type_feedback_info) #ifdef ENABLE_DEBUGGER_SUPPORT #define STRUCT_LIST_DEBUGGER(V) \ @@ -589,6 +595,7 @@ enum InstanceType { SCRIPT_TYPE, CODE_CACHE_TYPE, POLYMORPHIC_CODE_CACHE_TYPE, + TYPE_FEEDBACK_INFO_TYPE, // The following two instance types are only used when ENABLE_DEBUGGER_SUPPORT // is defined. However as include/v8.h contain some of the instance type // constants always having them avoids them getting different numbers @@ -923,10 +930,11 @@ class Object : public MaybeObject { JSReceiver* getter); static Handle<Object> GetElement(Handle<Object> object, uint32_t index); - inline MaybeObject* GetElement(uint32_t index); + MUST_USE_RESULT inline MaybeObject* GetElement(uint32_t index); // For use when we know that no exception can be thrown. inline Object* GetElementNoExceptionThrown(uint32_t index); - MaybeObject* GetElementWithReceiver(Object* receiver, uint32_t index); + MUST_USE_RESULT MaybeObject* GetElementWithReceiver(Object* receiver, + uint32_t index); // Return the object's prototype (might be Heap::null_value()). Object* GetPrototype(); @@ -1006,7 +1014,8 @@ class Smi: public Object { void SmiVerify(); #endif - static const int kMinValue = (-1 << (kSmiValueSize - 1)); + static const int kMinValue = + (static_cast<unsigned int>(-1)) << (kSmiValueSize - 1); static const int kMaxValue = -(kMinValue + 1); private: @@ -1598,22 +1607,23 @@ class JSObject: public JSReceiver { MUST_USE_RESULT MaybeObject* DefineAccessor(AccessorInfo* info); // Used from Object::GetProperty(). - MaybeObject* GetPropertyWithFailedAccessCheck( + MUST_USE_RESULT MaybeObject* GetPropertyWithFailedAccessCheck( Object* receiver, LookupResult* result, String* name, PropertyAttributes* attributes); - MaybeObject* GetPropertyWithInterceptor( + MUST_USE_RESULT MaybeObject* GetPropertyWithInterceptor( JSReceiver* receiver, String* name, PropertyAttributes* attributes); - MaybeObject* GetPropertyPostInterceptor( + MUST_USE_RESULT MaybeObject* GetPropertyPostInterceptor( + JSReceiver* receiver, + String* name, + PropertyAttributes* attributes); + MUST_USE_RESULT MaybeObject* GetLocalPropertyPostInterceptor( JSReceiver* receiver, String* name, PropertyAttributes* attributes); - MaybeObject* GetLocalPropertyPostInterceptor(JSReceiver* receiver, - String* name, - PropertyAttributes* attributes); // Returns true if this is an instance of an api function and has // been modified since it was created. May give false positives. @@ -1663,18 +1673,21 @@ class JSObject: public JSReceiver { inline void ValidateSmiOnlyElements(); // Makes sure that this object can contain HeapObject as elements. - inline MaybeObject* EnsureCanContainHeapObjectElements(); + MUST_USE_RESULT inline MaybeObject* EnsureCanContainHeapObjectElements(); // Makes sure that this object can contain the specified elements. - inline MaybeObject* EnsureCanContainElements(Object** elements, - uint32_t count, - EnsureElementsMode mode); - inline MaybeObject* EnsureCanContainElements(FixedArrayBase* elements, - EnsureElementsMode mode); - MaybeObject* EnsureCanContainElements(Arguments* arguments, - uint32_t first_arg, - uint32_t arg_count, - EnsureElementsMode mode); + MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements( + Object** elements, + uint32_t count, + EnsureElementsMode mode); + MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements( + FixedArrayBase* elements, + EnsureElementsMode mode); + MUST_USE_RESULT MaybeObject* EnsureCanContainElements( + Arguments* arguments, + uint32_t first_arg, + uint32_t arg_count, + EnsureElementsMode mode); // Do we want to keep the elements in fast case when increasing the // capacity? @@ -1757,7 +1770,8 @@ class JSObject: public JSReceiver { // Returns the index'th element. // The undefined object if index is out of bounds. - MaybeObject* GetElementWithInterceptor(Object* receiver, uint32_t index); + MUST_USE_RESULT MaybeObject* GetElementWithInterceptor(Object* receiver, + uint32_t index); enum SetFastElementsCapacityMode { kAllowSmiOnlyElements, @@ -2064,11 +2078,12 @@ class JSObject: public JSReceiver { Object* structure, uint32_t index, Object* holder); - MaybeObject* SetElementWithCallback(Object* structure, - uint32_t index, - Object* value, - JSObject* holder, - StrictModeFlag strict_mode); + MUST_USE_RESULT MaybeObject* SetElementWithCallback( + Object* structure, + uint32_t index, + Object* value, + JSObject* holder, + StrictModeFlag strict_mode); MUST_USE_RESULT MaybeObject* SetElementWithInterceptor( uint32_t index, Object* value, @@ -2124,10 +2139,16 @@ class JSObject: public JSReceiver { String* name, Object* structure, PropertyAttributes attributes); - MUST_USE_RESULT MaybeObject* DefineGetterSetter( + MUST_USE_RESULT MaybeObject* DefineElementAccessor( + uint32_t index, + bool is_getter, + Object* fun, + PropertyAttributes attributes); + MUST_USE_RESULT MaybeObject* DefinePropertyAccessor( String* name, + bool is_getter, + Object* fun, PropertyAttributes attributes); - void LookupInDescriptor(String* name, LookupResult* result); // Returns the hidden properties backing store object, currently @@ -2135,9 +2156,11 @@ class JSObject: public JSReceiver { // If no hidden properties object has been put on this object, // return undefined, unless create_if_absent is true, in which case // a new dictionary is created, added to this object, and returned. - MaybeObject* GetHiddenPropertiesDictionary(bool create_if_absent); + MUST_USE_RESULT MaybeObject* GetHiddenPropertiesDictionary( + bool create_if_absent); // Updates the existing hidden properties dictionary. - MaybeObject* SetHiddenPropertiesDictionary(StringDictionary* dictionary); + MUST_USE_RESULT MaybeObject* SetHiddenPropertiesDictionary( + StringDictionary* dictionary); DISALLOW_IMPLICIT_CONSTRUCTORS(JSObject); }; @@ -2284,7 +2307,7 @@ class FixedDoubleArray: public FixedArrayBase { // Setter and getter for elements. inline double get_scalar(int index); - inline MaybeObject* get(int index); + MUST_USE_RESULT inline MaybeObject* get(int index); inline void set(int index, double value); inline void set_the_hole(int index); @@ -2398,7 +2421,9 @@ class DescriptorArray: public FixedArray { // Initialize or change the enum cache, // using the supplied storage for the small "bridge". - void SetEnumCache(FixedArray* bridge_storage, FixedArray* new_cache); + void SetEnumCache(FixedArray* bridge_storage, + FixedArray* new_cache, + Object* new_index_cache); // Accessors for fetching instance descriptor at descriptor number. inline String* GetKey(int descriptor_number); @@ -2429,12 +2454,20 @@ class DescriptorArray: public FixedArray { Descriptor* desc, const WhitenessWitness&); - // Transfer complete descriptor from another descriptor array to - // this one. - inline void CopyFrom(int index, - DescriptorArray* src, + // Transfer a complete descriptor from the src descriptor array to the dst + // one, dropping map transitions in CALLBACKS. + static void CopyFrom(Handle<DescriptorArray> dst, + int dst_index, + Handle<DescriptorArray> src, int src_index, - const WhitenessWitness&); + const WhitenessWitness& witness); + + // Transfer a complete descriptor from the src descriptor array to this + // descriptor array, dropping map transitions in CALLBACKS. + MUST_USE_RESULT MaybeObject* CopyFrom(int dst_index, + DescriptorArray* src, + int src_index, + const WhitenessWitness&); // Copy the descriptor array, insert a new descriptor and optionally // remove map transitions. If the descriptor is already present, it is @@ -2494,9 +2527,10 @@ class DescriptorArray: public FixedArray { static const int kFirstIndex = 3; // The length of the "bridge" to the enum cache. - static const int kEnumCacheBridgeLength = 2; + static const int kEnumCacheBridgeLength = 3; static const int kEnumCacheBridgeEnumIndex = 0; static const int kEnumCacheBridgeCacheIndex = 1; + static const int kEnumCacheBridgeIndicesCacheIndex = 2; // Layout description. static const int kBitField3StorageOffset = FixedArray::kHeaderSize; @@ -2897,22 +2931,12 @@ class Dictionary: public HashTable<Shape, Key> { // Returns the value at entry. Object* ValueAt(int entry) { - return this->get(HashTable<Shape, Key>::EntryToIndex(entry)+1); + return this->get(HashTable<Shape, Key>::EntryToIndex(entry) + 1); } // Set the value for entry. - // Returns false if the put wasn't performed due to property being read only. - // Returns true on successful put. - bool ValueAtPut(int entry, Object* value) { - // Check that this value can actually be written. - PropertyDetails details = DetailsAt(entry); - // If a value has not been initilized we allow writing to it even if - // it is read only (a declared const that has not been initialized). - if (details.IsReadOnly() && !ValueAt(entry)->IsTheHole()) { - return false; - } + void ValueAtPut(int entry, Object* value) { this->set(HashTable<Shape, Key>::EntryToIndex(entry) + 1, value); - return true; } // Returns the property details for the property at entry. @@ -3611,7 +3635,7 @@ class ExternalPixelArray: public ExternalArray { // Setter and getter. inline uint8_t get_scalar(int index); - inline MaybeObject* get(int index); + MUST_USE_RESULT inline MaybeObject* get(int index); inline void set(int index, uint8_t value); // This accessor applies the correct conversion from Smi, HeapNumber and @@ -3640,12 +3664,12 @@ class ExternalByteArray: public ExternalArray { public: // Setter and getter. inline int8_t get_scalar(int index); - inline MaybeObject* get(int index); + MUST_USE_RESULT inline MaybeObject* get(int index); inline void set(int index, int8_t value); // This accessor applies the correct conversion from Smi, HeapNumber // and undefined. - MaybeObject* SetValue(uint32_t index, Object* value); + MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); // Casting. static inline ExternalByteArray* cast(Object* obj); @@ -3669,12 +3693,12 @@ class ExternalUnsignedByteArray: public ExternalArray { public: // Setter and getter. inline uint8_t get_scalar(int index); - inline MaybeObject* get(int index); + MUST_USE_RESULT inline MaybeObject* get(int index); inline void set(int index, uint8_t value); // This accessor applies the correct conversion from Smi, HeapNumber // and undefined. - MaybeObject* SetValue(uint32_t index, Object* value); + MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); // Casting. static inline ExternalUnsignedByteArray* cast(Object* obj); @@ -3698,12 +3722,12 @@ class ExternalShortArray: public ExternalArray { public: // Setter and getter. inline int16_t get_scalar(int index); - inline MaybeObject* get(int index); + MUST_USE_RESULT inline MaybeObject* get(int index); inline void set(int index, int16_t value); // This accessor applies the correct conversion from Smi, HeapNumber // and undefined. - MaybeObject* SetValue(uint32_t index, Object* value); + MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); // Casting. static inline ExternalShortArray* cast(Object* obj); @@ -3727,12 +3751,12 @@ class ExternalUnsignedShortArray: public ExternalArray { public: // Setter and getter. inline uint16_t get_scalar(int index); - inline MaybeObject* get(int index); + MUST_USE_RESULT inline MaybeObject* get(int index); inline void set(int index, uint16_t value); // This accessor applies the correct conversion from Smi, HeapNumber // and undefined. - MaybeObject* SetValue(uint32_t index, Object* value); + MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); // Casting. static inline ExternalUnsignedShortArray* cast(Object* obj); @@ -3756,12 +3780,12 @@ class ExternalIntArray: public ExternalArray { public: // Setter and getter. inline int32_t get_scalar(int index); - inline MaybeObject* get(int index); + MUST_USE_RESULT inline MaybeObject* get(int index); inline void set(int index, int32_t value); // This accessor applies the correct conversion from Smi, HeapNumber // and undefined. - MaybeObject* SetValue(uint32_t index, Object* value); + MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); // Casting. static inline ExternalIntArray* cast(Object* obj); @@ -3785,12 +3809,12 @@ class ExternalUnsignedIntArray: public ExternalArray { public: // Setter and getter. inline uint32_t get_scalar(int index); - inline MaybeObject* get(int index); + MUST_USE_RESULT inline MaybeObject* get(int index); inline void set(int index, uint32_t value); // This accessor applies the correct conversion from Smi, HeapNumber // and undefined. - MaybeObject* SetValue(uint32_t index, Object* value); + MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); // Casting. static inline ExternalUnsignedIntArray* cast(Object* obj); @@ -3814,12 +3838,12 @@ class ExternalFloatArray: public ExternalArray { public: // Setter and getter. inline float get_scalar(int index); - inline MaybeObject* get(int index); + MUST_USE_RESULT inline MaybeObject* get(int index); inline void set(int index, float value); // This accessor applies the correct conversion from Smi, HeapNumber // and undefined. - MaybeObject* SetValue(uint32_t index, Object* value); + MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); // Casting. static inline ExternalFloatArray* cast(Object* obj); @@ -3843,12 +3867,12 @@ class ExternalDoubleArray: public ExternalArray { public: // Setter and getter. inline double get_scalar(int index); - inline MaybeObject* get(int index); + MUST_USE_RESULT inline MaybeObject* get(int index); inline void set(int index, double value); // This accessor applies the correct conversion from Smi, HeapNumber // and undefined. - MaybeObject* SetValue(uint32_t index, Object* value); + MUST_USE_RESULT MaybeObject* SetValue(uint32_t index, Object* value); // Casting. static inline ExternalDoubleArray* cast(Object* obj); @@ -4019,6 +4043,7 @@ class TypeFeedbackCells: public FixedArray { // Forward declaration. class SafepointEntry; +class TypeFeedbackInfo; // Code describes objects with on-the-fly generated machine code. class Code: public HeapObject { @@ -4090,8 +4115,9 @@ class Code: public HeapObject { // [deoptimization_data]: Array containing data for deopt. DECL_ACCESSORS(deoptimization_data, FixedArray) - // [type_feedback_cells]: Array containing cache cells used for type feedback. - DECL_ACCESSORS(type_feedback_cells, TypeFeedbackCells) + // [type_feedback_info]: Struct containing type feedback information. + // Will contain either a TypeFeedbackInfo object, or undefined. + DECL_ACCESSORS(type_feedback_info, Object) // [gc_metadata]: Field used to hold GC related metadata. The contents of this // field does not have to be traced during garbage collection since @@ -4216,6 +4242,28 @@ class Code: public HeapObject { // Find the first map in an IC stub. Map* FindFirstMap(); + class ExtraICStateStrictMode: public BitField<StrictModeFlag, 0, 1> {}; + class ExtraICStateKeyedAccessGrowMode: + public BitField<KeyedAccessGrowMode, 1, 1> {}; // NOLINT + + static const int kExtraICStateGrowModeShift = 1; + + static inline StrictModeFlag GetStrictMode(ExtraICState extra_ic_state) { + return ExtraICStateStrictMode::decode(extra_ic_state); + } + + static inline KeyedAccessGrowMode GetKeyedAccessGrowMode( + ExtraICState extra_ic_state) { + return ExtraICStateKeyedAccessGrowMode::decode(extra_ic_state); + } + + static inline ExtraICState ComputeExtraICState( + KeyedAccessGrowMode grow_mode, + StrictModeFlag strict_mode) { + return ExtraICStateKeyedAccessGrowMode::encode(grow_mode) | + ExtraICStateStrictMode::encode(strict_mode); + } + // Flags operations. static inline Flags ComputeFlags( Kind kind, @@ -4320,9 +4368,9 @@ class Code: public HeapObject { static const int kHandlerTableOffset = kRelocationInfoOffset + kPointerSize; static const int kDeoptimizationDataOffset = kHandlerTableOffset + kPointerSize; - static const int kTypeFeedbackCellsOffset = + static const int kTypeFeedbackInfoOffset = kDeoptimizationDataOffset + kPointerSize; - static const int kGCMetadataOffset = kTypeFeedbackCellsOffset + kPointerSize; + static const int kGCMetadataOffset = kTypeFeedbackInfoOffset + kPointerSize; static const int kFlagsOffset = kGCMetadataOffset + kPointerSize; static const int kKindSpecificFlagsOffset = kFlagsOffset + kIntSize; @@ -4711,8 +4759,8 @@ class Map: public HeapObject { // Adds an entry to this map's descriptor array for a transition to // |transitioned_map| when its elements_kind is changed to |elements_kind|. - MaybeObject* AddElementsTransition(ElementsKind elements_kind, - Map* transitioned_map); + MUST_USE_RESULT MaybeObject* AddElementsTransition( + ElementsKind elements_kind, Map* transitioned_map); // Returns the transitioned map for this map with the most generic // elements_kind that's found in |candidates|, or null handle if no match is @@ -4744,7 +4792,8 @@ class Map: public HeapObject { Object* GetPrototypeTransition(Object* prototype); - MaybeObject* PutPrototypeTransition(Object* prototype, Map* map); + MUST_USE_RESULT MaybeObject* PutPrototypeTransition(Object* prototype, + Map* map); static const int kMaxPreAllocatedPropertyFields = 255; @@ -5278,8 +5327,11 @@ class SharedFunctionInfo: public HeapObject { // through the API, which does not change this flag). DECL_BOOLEAN_ACCESSORS(is_anonymous) - // Indicates that the function cannot be crankshafted. - DECL_BOOLEAN_ACCESSORS(dont_crankshaft) + // Is this a function or top-level/eval code. + DECL_BOOLEAN_ACCESSORS(is_function) + + // Indicates that the function cannot be optimized. + DECL_BOOLEAN_ACCESSORS(dont_optimize) // Indicates that the function cannot be inlined. DECL_BOOLEAN_ACCESSORS(dont_inline) @@ -5292,9 +5344,8 @@ class SharedFunctionInfo: public HeapObject { void EnableDeoptimizationSupport(Code* recompiled); // Disable (further) attempted optimization of all functions sharing this - // shared function info. The function is the one we actually tried to - // optimize. - void DisableOptimization(JSFunction* function); + // shared function info. + void DisableOptimization(); // Lookup the bailout ID and ASSERT that it exists in the non-optimized // code, returns whether it asserted (i.e., always true if assertions are @@ -5492,7 +5543,8 @@ class SharedFunctionInfo: public HeapObject { kBoundFunction, kIsAnonymous, kNameShouldPrintAsAnonymous, - kDontCrankshaft, + kIsFunction, + kDontOptimize, kDontInline, kCompilerHintsCount // Pseudo entry }; @@ -5633,7 +5685,8 @@ class JSFunction: public JSObject { // The initial map for an object created by this constructor. inline Map* initial_map(); inline void set_initial_map(Map* value); - inline MaybeObject* set_initial_map_and_cache_transitions(Map* value); + MUST_USE_RESULT inline MaybeObject* set_initial_map_and_cache_transitions( + Map* value); inline bool has_initial_map(); // Get and set the prototype property on a JSFunction. If the @@ -5644,7 +5697,7 @@ class JSFunction: public JSObject { inline bool has_instance_prototype(); inline Object* prototype(); inline Object* instance_prototype(); - MaybeObject* SetInstancePrototype(Object* value); + MUST_USE_RESULT MaybeObject* SetInstancePrototype(Object* value); MUST_USE_RESULT MaybeObject* SetPrototype(Object* value); // After prototype is removed, it will not be created when accessed, and @@ -6157,12 +6210,14 @@ class CompilationCacheTable: public HashTable<CompilationCacheShape, LanguageMode language_mode, int scope_position); Object* LookupRegExp(String* source, JSRegExp::Flags flags); - MaybeObject* Put(String* src, Object* value); - MaybeObject* PutEval(String* src, - Context* context, - SharedFunctionInfo* value, - int scope_position); - MaybeObject* PutRegExp(String* src, JSRegExp::Flags flags, FixedArray* value); + MUST_USE_RESULT MaybeObject* Put(String* src, Object* value); + MUST_USE_RESULT MaybeObject* PutEval(String* src, + Context* context, + SharedFunctionInfo* value, + int scope_position); + MUST_USE_RESULT MaybeObject* PutRegExp(String* src, + JSRegExp::Flags flags, + FixedArray* value); // Remove given value from cache. void Remove(Object* value); @@ -6323,6 +6378,40 @@ class PolymorphicCodeCacheHashTable }; +class TypeFeedbackInfo: public Struct { + public: + inline int ic_total_count(); + inline void set_ic_total_count(int count); + + inline int ic_with_typeinfo_count(); + inline void set_ic_with_typeinfo_count(int count); + + DECL_ACCESSORS(type_feedback_cells, TypeFeedbackCells) + + static inline TypeFeedbackInfo* cast(Object* obj); + +#ifdef OBJECT_PRINT + inline void TypeFeedbackInfoPrint() { + TypeFeedbackInfoPrint(stdout); + } + void TypeFeedbackInfoPrint(FILE* out); +#endif +#ifdef DEBUG + void TypeFeedbackInfoVerify(); +#endif + + static const int kIcTotalCountOffset = HeapObject::kHeaderSize; + static const int kIcWithTypeinfoCountOffset = + kIcTotalCountOffset + kPointerSize; + static const int kTypeFeedbackCellsOffset = + kIcWithTypeinfoCountOffset + kPointerSize; + static const int kSize = kTypeFeedbackCellsOffset + kPointerSize; + + private: + DISALLOW_IMPLICIT_CONSTRUCTORS(TypeFeedbackInfo); +}; + + enum AllowNullsFlag {ALLOW_NULLS, DISALLOW_NULLS}; enum RobustnessFlag {ROBUST_STRING_TRAVERSAL, FAST_STRING_TRAVERSAL}; @@ -7627,7 +7716,7 @@ class JSArray: public JSObject { MUST_USE_RESULT MaybeObject* SetElementsLength(Object* length); // Set the content of the array to the content of storage. - inline MaybeObject* SetContent(FixedArrayBase* storage); + MUST_USE_RESULT inline MaybeObject* SetContent(FixedArrayBase* storage); // Casting. static inline JSArray* cast(Object* obj); @@ -7755,6 +7844,17 @@ class AccessorPair: public Struct { static inline AccessorPair* cast(Object* obj); + MUST_USE_RESULT MaybeObject* CopyWithoutTransitions(); + + // TODO(svenpanne) Evil temporary helper, will vanish soon... + void set(bool modify_getter, Object* value) { + if (modify_getter) { + set_getter(value); + } else { + set_setter(value); + } + } + #ifdef OBJECT_PRINT void AccessorPairPrint(FILE* out = stdout); #endif |