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

Side by Side Diff: src/objects.h

Issue 48913008: Remove calls to JSObject::SetLocalPropertyIgnoreAttributesTrampoline within objects.cc (Closed) Base URL: https://github.com/v8/v8.git@bleeding_edge
Patch Set: last one Created 7 years, 1 month 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
« no previous file with comments | « src/handles.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 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 248
249 249
250 // NormalizedMapSharingMode is used to specify whether a map may be shared 250 // NormalizedMapSharingMode is used to specify whether a map may be shared
251 // by different objects with normalized properties. 251 // by different objects with normalized properties.
252 enum NormalizedMapSharingMode { 252 enum NormalizedMapSharingMode {
253 UNIQUE_NORMALIZED_MAP, 253 UNIQUE_NORMALIZED_MAP,
254 SHARED_NORMALIZED_MAP 254 SHARED_NORMALIZED_MAP
255 }; 255 };
256 256
257 257
258 // Indicates whether a get method should implicitly create the object looked up.
259 enum CreationFlag {
260 ALLOW_CREATION,
261 OMIT_CREATION
262 };
263
264
265 // Indicates whether transitions can be added to a source map or not. 258 // Indicates whether transitions can be added to a source map or not.
266 enum TransitionFlag { 259 enum TransitionFlag {
267 INSERT_TRANSITION, 260 INSERT_TRANSITION,
268 OMIT_TRANSITION 261 OMIT_TRANSITION
269 }; 262 };
270 263
271 264
272 enum DebugExtraICState { 265 enum DebugExtraICState {
273 DEBUG_BREAK, 266 DEBUG_BREAK,
274 DEBUG_PREPARE_STEP_IN 267 DEBUG_PREPARE_STEP_IN
(...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after
1502 uint32_t index); 1495 uint32_t index);
1503 // For use when we know that no exception can be thrown. 1496 // For use when we know that no exception can be thrown.
1504 inline Object* GetElementNoExceptionThrown(Isolate* isolate, uint32_t index); 1497 inline Object* GetElementNoExceptionThrown(Isolate* isolate, uint32_t index);
1505 MUST_USE_RESULT MaybeObject* GetElementWithReceiver(Isolate* isolate, 1498 MUST_USE_RESULT MaybeObject* GetElementWithReceiver(Isolate* isolate,
1506 Object* receiver, 1499 Object* receiver,
1507 uint32_t index); 1500 uint32_t index);
1508 1501
1509 // Return the object's prototype (might be Heap::null_value()). 1502 // Return the object's prototype (might be Heap::null_value()).
1510 Object* GetPrototype(Isolate* isolate); 1503 Object* GetPrototype(Isolate* isolate);
1511 1504
1505 // Returns the permanent hash code associated with this object. May return
1506 // undefined if not yet created.
1507 Object* GetHash();
1508
1512 // Returns the permanent hash code associated with this object depending on 1509 // Returns the permanent hash code associated with this object depending on
1513 // the actual object type. Might return a failure in case no hash was 1510 // the actual object type. May create and store a hash code if needed and none
1514 // created yet or GC was caused by creation. 1511 // exists.
1515 MUST_USE_RESULT MaybeObject* GetHash(CreationFlag flag); 1512 // TODO(rafaelw): Remove isolate parameter when objects.cc is fully
1513 // handlified.
1514 static Handle<Object> GetOrCreateHash(Handle<Object> object,
1515 Isolate* isolate);
1516 1516
1517 // Checks whether this object has the same value as the given one. This 1517 // Checks whether this object has the same value as the given one. This
1518 // function is implemented according to ES5, section 9.12 and can be used 1518 // function is implemented according to ES5, section 9.12 and can be used
1519 // to implement the Harmony "egal" function. 1519 // to implement the Harmony "egal" function.
1520 bool SameValue(Object* other); 1520 bool SameValue(Object* other);
1521 1521
1522 // Tries to convert an object to an array index. Returns true and sets 1522 // Tries to convert an object to an array index. Returns true and sets
1523 // the output parameter if it succeeds. 1523 // the output parameter if it succeeds.
1524 inline bool ToArrayIndex(uint32_t* index); 1524 inline bool ToArrayIndex(uint32_t* index);
1525 1525
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
1996 inline PropertyAttributes GetElementAttribute(uint32_t index); 1996 inline PropertyAttributes GetElementAttribute(uint32_t index);
1997 inline PropertyAttributes GetLocalElementAttribute(uint32_t index); 1997 inline PropertyAttributes GetLocalElementAttribute(uint32_t index);
1998 1998
1999 // Return the object's prototype (might be Heap::null_value()). 1999 // Return the object's prototype (might be Heap::null_value()).
2000 inline Object* GetPrototype(); 2000 inline Object* GetPrototype();
2001 2001
2002 // Return the constructor function (may be Heap::null_value()). 2002 // Return the constructor function (may be Heap::null_value()).
2003 inline Object* GetConstructor(); 2003 inline Object* GetConstructor();
2004 2004
2005 // Retrieves a permanent object identity hash code. The undefined value might 2005 // Retrieves a permanent object identity hash code. The undefined value might
2006 // be returned in case no hash was created yet and OMIT_CREATION was used. 2006 // be returned in case no hash was created yet.
2007 inline MUST_USE_RESULT MaybeObject* GetIdentityHash(CreationFlag flag); 2007 inline Object* GetIdentityHash();
2008
2009 // Retrieves a permanent object identity hash code. May create and store a
2010 // hash code if needed and none exists.
2011 inline static Handle<Object> GetOrCreateIdentityHash(
2012 Handle<JSReceiver> object);
2008 2013
2009 // Lookup a property. If found, the result is valid and has 2014 // Lookup a property. If found, the result is valid and has
2010 // detailed information. 2015 // detailed information.
2011 void LocalLookup(Name* name, LookupResult* result, 2016 void LocalLookup(Name* name, LookupResult* result,
2012 bool search_hidden_prototypes = false); 2017 bool search_hidden_prototypes = false);
2013 void Lookup(Name* name, LookupResult* result); 2018 void Lookup(Name* name, LookupResult* result);
2014 2019
2015 protected: 2020 protected:
2016 Smi* GenerateIdentityHash(); 2021 Smi* GenerateIdentityHash();
2017 2022
(...skipping 11 matching lines...) Expand all
2029 LookupResult* result, 2034 LookupResult* result,
2030 Handle<Name> key, 2035 Handle<Name> key,
2031 Handle<Object> value, 2036 Handle<Object> value,
2032 PropertyAttributes attributes, 2037 PropertyAttributes attributes,
2033 StrictModeFlag strict_mode, 2038 StrictModeFlag strict_mode,
2034 StoreFromKeyed store_from_keyed); 2039 StoreFromKeyed store_from_keyed);
2035 2040
2036 DISALLOW_IMPLICIT_CONSTRUCTORS(JSReceiver); 2041 DISALLOW_IMPLICIT_CONSTRUCTORS(JSReceiver);
2037 }; 2042 };
2038 2043
2044 // Forward declaration for JSObject::GetOrCreateHiddenPropertiesHashTable.
2045 class ObjectHashTable;
2046
2039 // The JSObject describes real heap allocated JavaScript objects with 2047 // The JSObject describes real heap allocated JavaScript objects with
2040 // properties. 2048 // properties.
2041 // Note that the map of JSObject changes during execution to enable inline 2049 // Note that the map of JSObject changes during execution to enable inline
2042 // caching. 2050 // caching.
2043 class JSObject: public JSReceiver { 2051 class JSObject: public JSReceiver {
2044 public: 2052 public:
2045 // [properties]: Backing storage for properties. 2053 // [properties]: Backing storage for properties.
2046 // properties is a FixedArray in the fast case and a Dictionary in the 2054 // properties is a FixedArray in the fast case and a Dictionary in the
2047 // slow case. 2055 // slow case.
2048 DECL_ACCESSORS(properties, FixedArray) // Get and set fast properties. 2056 DECL_ACCESSORS(properties, FixedArray) // Get and set fast properties.
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
2280 // 2288 //
2281 // Hidden properties are not local properties of the object itself. 2289 // Hidden properties are not local properties of the object itself.
2282 // Instead they are stored in an auxiliary structure kept as a local 2290 // Instead they are stored in an auxiliary structure kept as a local
2283 // property with a special name Heap::hidden_string(). But if the 2291 // property with a special name Heap::hidden_string(). But if the
2284 // receiver is a JSGlobalProxy then the auxiliary object is a property 2292 // receiver is a JSGlobalProxy then the auxiliary object is a property
2285 // of its prototype, and if it's a detached proxy, then you can't have 2293 // of its prototype, and if it's a detached proxy, then you can't have
2286 // hidden properties. 2294 // hidden properties.
2287 2295
2288 // Sets a hidden property on this object. Returns this object if successful, 2296 // Sets a hidden property on this object. Returns this object if successful,
2289 // undefined if called on a detached proxy. 2297 // undefined if called on a detached proxy.
2290 static Handle<Object> SetHiddenProperty(Handle<JSObject> obj, 2298 static Handle<Object> SetHiddenProperty(Handle<JSObject> object,
2291 Handle<Name> key, 2299 Handle<Name> key,
2292 Handle<Object> value); 2300 Handle<Object> value);
2293 // Returns a failure if a GC is required.
2294 MUST_USE_RESULT MaybeObject* SetHiddenProperty(Name* key, Object* value);
2295 // Gets the value of a hidden property with the given key. Returns the hole 2301 // Gets the value of a hidden property with the given key. Returns the hole
2296 // if the property doesn't exist (or if called on a detached proxy), 2302 // if the property doesn't exist (or if called on a detached proxy),
2297 // otherwise returns the value set for the key. 2303 // otherwise returns the value set for the key.
2298 Object* GetHiddenProperty(Name* key); 2304 Object* GetHiddenProperty(Name* key);
2299 // Deletes a hidden property. Deleting a non-existing property is 2305 // Deletes a hidden property. Deleting a non-existing property is
2300 // considered successful. 2306 // considered successful.
2301 static void DeleteHiddenProperty(Handle<JSObject> object, 2307 static void DeleteHiddenProperty(Handle<JSObject> object,
2302 Handle<Name> key); 2308 Handle<Name> key);
2303 // Returns true if the object has a property with the hidden string as name. 2309 // Returns true if the object has a property with the hidden string as name.
2304 bool HasHiddenProperties(); 2310 bool HasHiddenProperties();
2305 2311
2306 static int GetIdentityHash(Handle<JSObject> object); 2312 static void SetIdentityHash(Handle<JSObject> object, Handle<Smi> hash);
2307 static void SetIdentityHash(Handle<JSObject> object, Smi* hash);
2308 2313
2309 inline void ValidateElements(); 2314 inline void ValidateElements();
2310 2315
2311 // Makes sure that this object can contain HeapObject as elements. 2316 // Makes sure that this object can contain HeapObject as elements.
2312 static inline void EnsureCanContainHeapObjectElements(Handle<JSObject> obj); 2317 static inline void EnsureCanContainHeapObjectElements(Handle<JSObject> obj);
2313 2318
2314 // Makes sure that this object can contain the specified elements. 2319 // Makes sure that this object can contain the specified elements.
2315 MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements( 2320 MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements(
2316 Object** elements, 2321 Object** elements,
2317 uint32_t count, 2322 uint32_t count,
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after
2851 v8::AccessControl access_control); 2856 v8::AccessControl access_control);
2852 2857
2853 // Try to define a single accessor paying attention to map transitions. 2858 // Try to define a single accessor paying attention to map transitions.
2854 // Returns false if this was not possible and we have to use the slow case. 2859 // Returns false if this was not possible and we have to use the slow case.
2855 static bool DefineFastAccessor(Handle<JSObject> object, 2860 static bool DefineFastAccessor(Handle<JSObject> object,
2856 Handle<Name> name, 2861 Handle<Name> name,
2857 AccessorComponent component, 2862 AccessorComponent component,
2858 Handle<Object> accessor, 2863 Handle<Object> accessor,
2859 PropertyAttributes attributes); 2864 PropertyAttributes attributes);
2860 2865
2861 enum InitializeHiddenProperties {
2862 CREATE_NEW_IF_ABSENT,
2863 ONLY_RETURN_INLINE_VALUE
2864 };
2865 2866
2866 // If create_if_absent is true, return the hash table backing store 2867 // Return the hash table backing store or the inline stored identity hash,
2867 // for hidden properties. If there is no backing store, allocate one. 2868 // whatever is found.
2868 // If create_if_absent is false, return the hash table backing store 2869 MUST_USE_RESULT Object* GetHiddenPropertiesHashTable();
2869 // or the inline stored identity hash, whatever is found. 2870
2870 MUST_USE_RESULT MaybeObject* GetHiddenPropertiesHashTable( 2871 // Return the hash table backing store for hidden properties. If there is no
2871 InitializeHiddenProperties init_option); 2872 // backing store, allocate one.
2873 static Handle<ObjectHashTable> GetOrCreateHiddenPropertiesHashtable(
2874 Handle<JSObject> object);
2875
2872 // Set the hidden property backing store to either a hash table or 2876 // Set the hidden property backing store to either a hash table or
2873 // the inline-stored identity hash. 2877 // the inline-stored identity hash.
2874 MUST_USE_RESULT MaybeObject* SetHiddenPropertiesHashTable( 2878 static Handle<Object> SetHiddenPropertiesHashTable(
2875 Object* value); 2879 Handle<JSObject> object,
2880 Handle<Object> value);
2876 2881
2877 MUST_USE_RESULT MaybeObject* GetIdentityHash(CreationFlag flag); 2882 MUST_USE_RESULT Object* GetIdentityHash();
2883
2884 static Handle<Object> GetOrCreateIdentityHash(Handle<JSObject> object);
2878 2885
2879 DISALLOW_IMPLICIT_CONSTRUCTORS(JSObject); 2886 DISALLOW_IMPLICIT_CONSTRUCTORS(JSObject);
2880 }; 2887 };
2881 2888
2882 2889
2883 // Common superclass for FixedArrays that allow implementations to share 2890 // Common superclass for FixedArrays that allow implementations to share
2884 // common accessors and some code paths. 2891 // common accessors and some code paths.
2885 class FixedArrayBase: public HeapObject { 2892 class FixedArrayBase: public HeapObject {
2886 public: 2893 public:
2887 // [length]: length of the array. 2894 // [length]: length of the array.
(...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after
3477 static uint32_t HashForObject(Key key, Object* object) { return 0; } 3484 static uint32_t HashForObject(Key key, Object* object) { return 0; }
3478 static uint32_t SeededHashForObject(Key key, uint32_t seed, Object* object) { 3485 static uint32_t SeededHashForObject(Key key, uint32_t seed, Object* object) {
3479 ASSERT(UsesSeed); 3486 ASSERT(UsesSeed);
3480 return HashForObject(key, object); 3487 return HashForObject(key, object);
3481 } 3488 }
3482 }; 3489 };
3483 3490
3484 template<typename Shape, typename Key> 3491 template<typename Shape, typename Key>
3485 class HashTable: public FixedArray { 3492 class HashTable: public FixedArray {
3486 public: 3493 public:
3487 enum MinimumCapacity {
3488 USE_DEFAULT_MINIMUM_CAPACITY,
3489 USE_CUSTOM_MINIMUM_CAPACITY
3490 };
3491
3492 // Wrapper methods 3494 // Wrapper methods
3493 inline uint32_t Hash(Key key) { 3495 inline uint32_t Hash(Key key) {
3494 if (Shape::UsesSeed) { 3496 if (Shape::UsesSeed) {
3495 return Shape::SeededHash(key, 3497 return Shape::SeededHash(key,
3496 GetHeap()->HashSeed()); 3498 GetHeap()->HashSeed());
3497 } else { 3499 } else {
3498 return Shape::Hash(key); 3500 return Shape::Hash(key);
3499 } 3501 }
3500 } 3502 }
3501 3503
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
3592 (FixedArray::kMaxLength - kElementsStartOffset) / kEntrySize; 3594 (FixedArray::kMaxLength - kElementsStartOffset) / kEntrySize;
3593 3595
3594 // Find entry for key otherwise return kNotFound. 3596 // Find entry for key otherwise return kNotFound.
3595 inline int FindEntry(Key key); 3597 inline int FindEntry(Key key);
3596 int FindEntry(Isolate* isolate, Key key); 3598 int FindEntry(Isolate* isolate, Key key);
3597 3599
3598 // Rehashes the table in-place. 3600 // Rehashes the table in-place.
3599 void Rehash(Key key); 3601 void Rehash(Key key);
3600 3602
3601 protected: 3603 protected:
3604 friend class ObjectHashSet;
3605 friend class ObjectHashTable;
3606
3602 // Find the entry at which to insert element with the given key that 3607 // Find the entry at which to insert element with the given key that
3603 // has the given hash value. 3608 // has the given hash value.
3604 uint32_t FindInsertionEntry(uint32_t hash); 3609 uint32_t FindInsertionEntry(uint32_t hash);
3605 3610
3606 // Returns the index for an entry (of the key) 3611 // Returns the index for an entry (of the key)
3607 static inline int EntryToIndex(int entry) { 3612 static inline int EntryToIndex(int entry) {
3608 return (entry * kEntrySize) + kElementsStartIndex; 3613 return (entry * kEntrySize) + kElementsStartIndex;
3609 } 3614 }
3610 3615
3611 // Update the number of elements in the hash table. 3616 // Update the number of elements in the hash table.
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
4055 class ObjectHashSet: public HashTable<ObjectHashTableShape<1>, Object*> { 4060 class ObjectHashSet: public HashTable<ObjectHashTableShape<1>, Object*> {
4056 public: 4061 public:
4057 static inline ObjectHashSet* cast(Object* obj) { 4062 static inline ObjectHashSet* cast(Object* obj) {
4058 ASSERT(obj->IsHashTable()); 4063 ASSERT(obj->IsHashTable());
4059 return reinterpret_cast<ObjectHashSet*>(obj); 4064 return reinterpret_cast<ObjectHashSet*>(obj);
4060 } 4065 }
4061 4066
4062 // Looks up whether the given key is part of this hash set. 4067 // Looks up whether the given key is part of this hash set.
4063 bool Contains(Object* key); 4068 bool Contains(Object* key);
4064 4069
4070 static Handle<ObjectHashSet> EnsureCapacity(
4071 Handle<ObjectHashSet> table,
4072 int n,
4073 Handle<Object> key,
4074 PretenureFlag pretenure = NOT_TENURED);
4075
4076 // Attempt to shrink hash table after removal of key.
4077 static Handle<ObjectHashSet> Shrink(Handle<ObjectHashSet> table,
4078 Handle<Object> key);
4079
4065 // Adds the given key to this hash set. 4080 // Adds the given key to this hash set.
4066 MUST_USE_RESULT MaybeObject* Add(Object* key); 4081 static Handle<ObjectHashSet> Add(Handle<ObjectHashSet> table,
4082 Handle<Object> key);
4067 4083
4068 // Removes the given key from this hash set. 4084 // Removes the given key from this hash set.
4069 MUST_USE_RESULT MaybeObject* Remove(Object* key); 4085 static Handle<ObjectHashSet> Remove(Handle<ObjectHashSet> table,
4086 Handle<Object> key);
4070 }; 4087 };
4071 4088
4072 4089
4073 // ObjectHashTable maps keys that are arbitrary objects to object values by 4090 // ObjectHashTable maps keys that are arbitrary objects to object values by
4074 // using the identity hash of the key for hashing purposes. 4091 // using the identity hash of the key for hashing purposes.
4075 class ObjectHashTable: public HashTable<ObjectHashTableShape<2>, Object*> { 4092 class ObjectHashTable: public HashTable<ObjectHashTableShape<2>, Object*> {
4076 public: 4093 public:
4077 static inline ObjectHashTable* cast(Object* obj) { 4094 static inline ObjectHashTable* cast(Object* obj) {
4078 ASSERT(obj->IsHashTable()); 4095 ASSERT(obj->IsHashTable());
4079 return reinterpret_cast<ObjectHashTable*>(obj); 4096 return reinterpret_cast<ObjectHashTable*>(obj);
4080 } 4097 }
4081 4098
4099 static Handle<ObjectHashTable> EnsureCapacity(
4100 Handle<ObjectHashTable> table,
4101 int n,
4102 Handle<Object> key,
4103 PretenureFlag pretenure = NOT_TENURED);
4104
4105 // Attempt to shrink hash table after removal of key.
4106 static Handle<ObjectHashTable> Shrink(Handle<ObjectHashTable> table,
4107 Handle<Object> key);
4108
4082 // Looks up the value associated with the given key. The hole value is 4109 // Looks up the value associated with the given key. The hole value is
4083 // returned in case the key is not present. 4110 // returned in case the key is not present.
4084 Object* Lookup(Object* key); 4111 Object* Lookup(Object* key);
4085 4112
4086 // Adds (or overwrites) the value associated with the given key. Mapping a 4113 // Adds (or overwrites) the value associated with the given key. Mapping a
4087 // key to the hole value causes removal of the whole entry. 4114 // key to the hole value causes removal of the whole entry.
4088 MUST_USE_RESULT MaybeObject* Put(Object* key, Object* value); 4115 static Handle<ObjectHashTable> Put(Handle<ObjectHashTable> table,
4116 Handle<Object> key,
4117 Handle<Object> value);
4089 4118
4090 private: 4119 private:
4091 friend class MarkCompactCollector; 4120 friend class MarkCompactCollector;
4092 4121
4093 void AddEntry(int entry, Object* key, Object* value); 4122 void AddEntry(int entry, Object* key, Object* value);
4094 void RemoveEntry(int entry); 4123 void RemoveEntry(int entry);
4095 4124
4096 // Returns the index to the value of an entry. 4125 // Returns the index to the value of an entry.
4097 static inline int EntryToValueIndex(int entry) { 4126 static inline int EntryToValueIndex(int entry) {
4098 return EntryToIndex(entry) + 1; 4127 return EntryToIndex(entry) + 1;
(...skipping 5251 matching lines...) Expand 10 before | Expand all | Expand 10 after
9350 static bool HasPropertyWithHandler(Handle<JSProxy> proxy, Handle<Name> name); 9379 static bool HasPropertyWithHandler(Handle<JSProxy> proxy, Handle<Name> name);
9351 static bool HasElementWithHandler(Handle<JSProxy> proxy, uint32_t index); 9380 static bool HasElementWithHandler(Handle<JSProxy> proxy, uint32_t index);
9352 9381
9353 static Handle<Object> DeletePropertyWithHandler(Handle<JSProxy> proxy, 9382 static Handle<Object> DeletePropertyWithHandler(Handle<JSProxy> proxy,
9354 Handle<Name> name, 9383 Handle<Name> name,
9355 DeleteMode mode); 9384 DeleteMode mode);
9356 static Handle<Object> DeleteElementWithHandler(Handle<JSProxy> proxy, 9385 static Handle<Object> DeleteElementWithHandler(Handle<JSProxy> proxy,
9357 uint32_t index, 9386 uint32_t index,
9358 DeleteMode mode); 9387 DeleteMode mode);
9359 9388
9360 MUST_USE_RESULT MaybeObject* GetIdentityHash(CreationFlag flag); 9389 MUST_USE_RESULT Object* GetIdentityHash();
9361 static Handle<Object> GetIdentityHash(Handle<JSProxy> proxy, 9390
9362 CreationFlag flag); 9391 static Handle<Object> GetOrCreateIdentityHash(Handle<JSProxy> proxy);
9363 9392
9364 DISALLOW_IMPLICIT_CONSTRUCTORS(JSProxy); 9393 DISALLOW_IMPLICIT_CONSTRUCTORS(JSProxy);
9365 }; 9394 };
9366 9395
9367 9396
9368 class JSFunctionProxy: public JSProxy { 9397 class JSFunctionProxy: public JSProxy {
9369 public: 9398 public:
9370 // [call_trap]: The call trap. 9399 // [call_trap]: The call trap.
9371 DECL_ACCESSORS(call_trap, Object) 9400 DECL_ACCESSORS(call_trap, Object)
9372 9401
(...skipping 1067 matching lines...) Expand 10 before | Expand all | Expand 10 after
10440 } else { 10469 } else {
10441 value &= ~(1 << bit_position); 10470 value &= ~(1 << bit_position);
10442 } 10471 }
10443 return value; 10472 return value;
10444 } 10473 }
10445 }; 10474 };
10446 10475
10447 } } // namespace v8::internal 10476 } } // namespace v8::internal
10448 10477
10449 #endif // V8_OBJECTS_H_ 10478 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/handles.cc ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698