| OLD | NEW | 
|---|
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 <iosfwd> | 8 #include <iosfwd> | 
| 9 | 9 | 
| 10 #include "src/assert-scope.h" | 10 #include "src/assert-scope.h" | 
| (...skipping 2461 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2472   friend class JSReceiver; | 2472   friend class JSReceiver; | 
| 2473   friend class Object; | 2473   friend class Object; | 
| 2474 | 2474 | 
| 2475   // Used from Object::GetProperty(). | 2475   // Used from Object::GetProperty(). | 
| 2476   MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithFailedAccessCheck( | 2476   MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithFailedAccessCheck( | 
| 2477       LookupIterator* it); | 2477       LookupIterator* it); | 
| 2478 | 2478 | 
| 2479   MUST_USE_RESULT static Maybe<bool> SetPropertyWithFailedAccessCheck( | 2479   MUST_USE_RESULT static Maybe<bool> SetPropertyWithFailedAccessCheck( | 
| 2480       LookupIterator* it, Handle<Object> value, ShouldThrow should_throw); | 2480       LookupIterator* it, Handle<Object> value, ShouldThrow should_throw); | 
| 2481 | 2481 | 
| 2482   // Add a property to a slow-case object. |  | 
| 2483   static void AddSlowProperty(Handle<JSObject> object, |  | 
| 2484                               Handle<Name> name, |  | 
| 2485                               Handle<Object> value, |  | 
| 2486                               PropertyAttributes attributes); |  | 
| 2487 |  | 
| 2488   MUST_USE_RESULT static Maybe<bool> DeletePropertyWithInterceptor( | 2482   MUST_USE_RESULT static Maybe<bool> DeletePropertyWithInterceptor( | 
| 2489       LookupIterator* it, ShouldThrow should_throw); | 2483       LookupIterator* it, ShouldThrow should_throw); | 
| 2490 | 2484 | 
| 2491   bool ReferencesObjectFromElements(FixedArray* elements, | 2485   bool ReferencesObjectFromElements(FixedArray* elements, | 
| 2492                                     ElementsKind kind, | 2486                                     ElementsKind kind, | 
| 2493                                     Object* object); | 2487                                     Object* object); | 
| 2494 | 2488 | 
| 2495   static Object* GetIdentityHash(Isolate* isolate, Handle<JSObject> object); | 2489   static Object* GetIdentityHash(Isolate* isolate, Handle<JSObject> object); | 
| 2496 | 2490 | 
| 2497   static Smi* GetOrCreateIdentityHash(Isolate* isolate, | 2491   static Smi* GetOrCreateIdentityHash(Isolate* isolate, | 
| (...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3507 | 3501 | 
| 3508   // Sets the entry to (key, value) pair. | 3502   // Sets the entry to (key, value) pair. | 
| 3509   inline void SetEntry(int entry, | 3503   inline void SetEntry(int entry, | 
| 3510                        Handle<Object> key, | 3504                        Handle<Object> key, | 
| 3511                        Handle<Object> value); | 3505                        Handle<Object> value); | 
| 3512   inline void SetEntry(int entry, | 3506   inline void SetEntry(int entry, | 
| 3513                        Handle<Object> key, | 3507                        Handle<Object> key, | 
| 3514                        Handle<Object> value, | 3508                        Handle<Object> value, | 
| 3515                        PropertyDetails details); | 3509                        PropertyDetails details); | 
| 3516 | 3510 | 
| 3517   MUST_USE_RESULT static Handle<Derived> Add( | 3511   MUST_USE_RESULT static Handle<Derived> Add(Handle<Derived> dictionary, | 
| 3518       Handle<Derived> dictionary, | 3512                                              Key key, Handle<Object> value, | 
| 3519       Key key, | 3513                                              PropertyDetails details, | 
| 3520       Handle<Object> value, | 3514                                              int* entry_out = nullptr); | 
| 3521       PropertyDetails details); |  | 
| 3522 | 3515 | 
| 3523   // Returns iteration indices array for the |dictionary|. | 3516   // Returns iteration indices array for the |dictionary|. | 
| 3524   // Values are direct indices in the |HashTable| array. | 3517   // Values are direct indices in the |HashTable| array. | 
| 3525   static Handle<FixedArray> BuildIterationIndicesArray( | 3518   static Handle<FixedArray> BuildIterationIndicesArray( | 
| 3526       Handle<Derived> dictionary); | 3519       Handle<Derived> dictionary); | 
| 3527 | 3520 | 
| 3528  protected: | 3521  protected: | 
| 3529   // Generic at put operation. | 3522   // Generic at put operation. | 
| 3530   MUST_USE_RESULT static Handle<Derived> AtPut( | 3523   MUST_USE_RESULT static Handle<Derived> AtPut( | 
| 3531       Handle<Derived> dictionary, | 3524       Handle<Derived> dictionary, | 
| 3532       Key key, | 3525       Key key, | 
| 3533       Handle<Object> value); | 3526       Handle<Object> value); | 
| 3534 | 3527 | 
| 3535   // Add entry to dictionary. | 3528   // Add entry to dictionary. Returns entry value. | 
| 3536   static void AddEntry( | 3529   static int AddEntry(Handle<Derived> dictionary, Key key, Handle<Object> value, | 
| 3537       Handle<Derived> dictionary, | 3530                       PropertyDetails details, uint32_t hash); | 
| 3538       Key key, |  | 
| 3539       Handle<Object> value, |  | 
| 3540       PropertyDetails details, |  | 
| 3541       uint32_t hash); |  | 
| 3542 | 3531 | 
| 3543   // Generate new enumeration indices to avoid enumeration index overflow. | 3532   // Generate new enumeration indices to avoid enumeration index overflow. | 
| 3544   // Returns iteration indices array for the |dictionary|. | 3533   // Returns iteration indices array for the |dictionary|. | 
| 3545   static Handle<FixedArray> GenerateNewEnumerationIndices( | 3534   static Handle<FixedArray> GenerateNewEnumerationIndices( | 
| 3546       Handle<Derived> dictionary); | 3535       Handle<Derived> dictionary); | 
| 3547   static const int kMaxNumberKeyIndex = DerivedHashTable::kPrefixStartIndex; | 3536   static const int kMaxNumberKeyIndex = DerivedHashTable::kPrefixStartIndex; | 
| 3548   static const int kNextEnumerationIndexIndex = kMaxNumberKeyIndex + 1; | 3537   static const int kNextEnumerationIndexIndex = kMaxNumberKeyIndex + 1; | 
| 3549 }; | 3538 }; | 
| 3550 | 3539 | 
| 3551 | 3540 | 
| (...skipping 4270 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 7822   // [native context]: the natives corresponding to this global object. | 7811   // [native context]: the natives corresponding to this global object. | 
| 7823   DECL_ACCESSORS(native_context, Context) | 7812   DECL_ACCESSORS(native_context, Context) | 
| 7824 | 7813 | 
| 7825   // [global proxy]: the global proxy object of the context | 7814   // [global proxy]: the global proxy object of the context | 
| 7826   DECL_ACCESSORS(global_proxy, JSObject) | 7815   DECL_ACCESSORS(global_proxy, JSObject) | 
| 7827 | 7816 | 
| 7828 | 7817 | 
| 7829   static void InvalidatePropertyCell(Handle<JSGlobalObject> object, | 7818   static void InvalidatePropertyCell(Handle<JSGlobalObject> object, | 
| 7830                                      Handle<Name> name); | 7819                                      Handle<Name> name); | 
| 7831   // Ensure that the global object has a cell for the given property name. | 7820   // Ensure that the global object has a cell for the given property name. | 
| 7832   static Handle<PropertyCell> EnsurePropertyCell(Handle<JSGlobalObject> global, | 7821   static Handle<PropertyCell> EnsureEmptyPropertyCell( | 
| 7833                                                  Handle<Name> name); | 7822       Handle<JSGlobalObject> global, Handle<Name> name, | 
|  | 7823       PropertyCellType cell_type, int* entry_out = nullptr); | 
| 7834 | 7824 | 
| 7835   DECLARE_CAST(JSGlobalObject) | 7825   DECLARE_CAST(JSGlobalObject) | 
| 7836 | 7826 | 
| 7837   inline bool IsDetached(); | 7827   inline bool IsDetached(); | 
| 7838 | 7828 | 
| 7839   // Dispatched behavior. | 7829   // Dispatched behavior. | 
| 7840   DECLARE_PRINTER(JSGlobalObject) | 7830   DECLARE_PRINTER(JSGlobalObject) | 
| 7841   DECLARE_VERIFIER(JSGlobalObject) | 7831   DECLARE_VERIFIER(JSGlobalObject) | 
| 7842 | 7832 | 
| 7843   // Layout description. | 7833   // Layout description. | 
| (...skipping 1829 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 9673   inline PropertyDetails property_details(); | 9663   inline PropertyDetails property_details(); | 
| 9674   inline void set_property_details(PropertyDetails details); | 9664   inline void set_property_details(PropertyDetails details); | 
| 9675 | 9665 | 
| 9676   PropertyCellConstantType GetConstantType(); | 9666   PropertyCellConstantType GetConstantType(); | 
| 9677 | 9667 | 
| 9678   // Computes the new type of the cell's contents for the given value, but | 9668   // Computes the new type of the cell's contents for the given value, but | 
| 9679   // without actually modifying the details. | 9669   // without actually modifying the details. | 
| 9680   static PropertyCellType UpdatedType(Handle<PropertyCell> cell, | 9670   static PropertyCellType UpdatedType(Handle<PropertyCell> cell, | 
| 9681                                       Handle<Object> value, | 9671                                       Handle<Object> value, | 
| 9682                                       PropertyDetails details); | 9672                                       PropertyDetails details); | 
| 9683   static void UpdateCell(Handle<GlobalDictionary> dictionary, int entry, | 9673   // Prepares property cell at given entry for receiving given value. | 
| 9684                          Handle<Object> value, PropertyDetails details); | 9674   // As a result the old cell could be invalidated and/or dependent code could | 
|  | 9675   // be deoptimized. Returns the prepared property cell. | 
|  | 9676   static Handle<PropertyCell> PrepareForValue( | 
|  | 9677       Handle<GlobalDictionary> dictionary, int entry, Handle<Object> value, | 
|  | 9678       PropertyDetails details); | 
| 9685 | 9679 | 
| 9686   static Handle<PropertyCell> InvalidateEntry( | 9680   static Handle<PropertyCell> InvalidateEntry( | 
| 9687       Handle<GlobalDictionary> dictionary, int entry); | 9681       Handle<GlobalDictionary> dictionary, int entry); | 
| 9688 | 9682 | 
| 9689   static void SetValueWithInvalidation(Handle<PropertyCell> cell, | 9683   static void SetValueWithInvalidation(Handle<PropertyCell> cell, | 
| 9690                                        Handle<Object> new_value); | 9684                                        Handle<Object> new_value); | 
| 9691 | 9685 | 
| 9692   DECLARE_CAST(PropertyCell) | 9686   DECLARE_CAST(PropertyCell) | 
| 9693 | 9687 | 
| 9694   // Dispatched behavior. | 9688   // Dispatched behavior. | 
| (...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 10922     } | 10916     } | 
| 10923     return value; | 10917     return value; | 
| 10924   } | 10918   } | 
| 10925 }; | 10919 }; | 
| 10926 | 10920 | 
| 10927 | 10921 | 
| 10928 }  // NOLINT, false-positive due to second-order macros. | 10922 }  // NOLINT, false-positive due to second-order macros. | 
| 10929 }  // NOLINT, false-positive due to second-order macros. | 10923 }  // NOLINT, false-positive due to second-order macros. | 
| 10930 | 10924 | 
| 10931 #endif  // V8_OBJECTS_H_ | 10925 #endif  // V8_OBJECTS_H_ | 
| OLD | NEW | 
|---|