| 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 #include <memory> | 9 #include <memory> | 
| 10 | 10 | 
| (...skipping 1832 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1843 }; | 1843 }; | 
| 1844 | 1844 | 
| 1845 enum class GetKeysConversion { kKeepNumbers, kConvertToString }; | 1845 enum class GetKeysConversion { kKeepNumbers, kConvertToString }; | 
| 1846 | 1846 | 
| 1847 enum class KeyCollectionMode { | 1847 enum class KeyCollectionMode { | 
| 1848   kOwnOnly = static_cast<int>(v8::KeyCollectionMode::kOwnOnly), | 1848   kOwnOnly = static_cast<int>(v8::KeyCollectionMode::kOwnOnly), | 
| 1849   kIncludePrototypes = | 1849   kIncludePrototypes = | 
| 1850       static_cast<int>(v8::KeyCollectionMode::kIncludePrototypes) | 1850       static_cast<int>(v8::KeyCollectionMode::kIncludePrototypes) | 
| 1851 }; | 1851 }; | 
| 1852 | 1852 | 
|  | 1853 enum class AllocationSiteUpdateMode { kUpdate, kCheckOnly }; | 
|  | 1854 | 
| 1853 // JSReceiver includes types on which properties can be defined, i.e., | 1855 // JSReceiver includes types on which properties can be defined, i.e., | 
| 1854 // JSObject and JSProxy. | 1856 // JSObject and JSProxy. | 
| 1855 class JSReceiver: public HeapObject { | 1857 class JSReceiver: public HeapObject { | 
| 1856  public: | 1858  public: | 
| 1857   // [properties]: Backing storage for properties. | 1859   // [properties]: Backing storage for properties. | 
| 1858   // properties is a FixedArray in the fast case and a Dictionary in the | 1860   // properties is a FixedArray in the fast case and a Dictionary in the | 
| 1859   // slow case. | 1861   // slow case. | 
| 1860   DECL_ACCESSORS(properties, FixedArray)  // Get and set fast properties. | 1862   DECL_ACCESSORS(properties, FixedArray)  // Get and set fast properties. | 
| 1861   inline void initialize_properties(); | 1863   inline void initialize_properties(); | 
| 1862   inline bool HasFastProperties(); | 1864   inline bool HasFastProperties(); | 
| (...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2293   // an access at key? | 2295   // an access at key? | 
| 2294   bool WouldConvertToSlowElements(uint32_t index); | 2296   bool WouldConvertToSlowElements(uint32_t index); | 
| 2295 | 2297 | 
| 2296   // Computes the new capacity when expanding the elements of a JSObject. | 2298   // Computes the new capacity when expanding the elements of a JSObject. | 
| 2297   static uint32_t NewElementsCapacity(uint32_t old_capacity) { | 2299   static uint32_t NewElementsCapacity(uint32_t old_capacity) { | 
| 2298     // (old_capacity + 50%) + 16 | 2300     // (old_capacity + 50%) + 16 | 
| 2299     return old_capacity + (old_capacity >> 1) + 16; | 2301     return old_capacity + (old_capacity >> 1) + 16; | 
| 2300   } | 2302   } | 
| 2301 | 2303 | 
| 2302   // These methods do not perform access checks! | 2304   // These methods do not perform access checks! | 
| 2303   static void UpdateAllocationSite(Handle<JSObject> object, | 2305   template <AllocationSiteUpdateMode update_or_check = | 
|  | 2306                 AllocationSiteUpdateMode::kUpdate> | 
|  | 2307   static bool UpdateAllocationSite(Handle<JSObject> object, | 
| 2304                                    ElementsKind to_kind); | 2308                                    ElementsKind to_kind); | 
| 2305 | 2309 | 
| 2306   // Lookup interceptors are used for handling properties controlled by host | 2310   // Lookup interceptors are used for handling properties controlled by host | 
| 2307   // objects. | 2311   // objects. | 
| 2308   inline bool HasNamedInterceptor(); | 2312   inline bool HasNamedInterceptor(); | 
| 2309   inline bool HasIndexedInterceptor(); | 2313   inline bool HasIndexedInterceptor(); | 
| 2310 | 2314 | 
| 2311   // Support functions for v8 api (needed for correct interceptor behavior). | 2315   // Support functions for v8 api (needed for correct interceptor behavior). | 
| 2312   MUST_USE_RESULT static Maybe<bool> HasRealNamedProperty( | 2316   MUST_USE_RESULT static Maybe<bool> HasRealNamedProperty( | 
| 2313       Handle<JSObject> object, Handle<Name> name); | 2317       Handle<JSObject> object, Handle<Name> name); | 
| (...skipping 6341 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 8655   inline bool DigestPretenuringFeedback(bool maximum_size_scavenge); | 8659   inline bool DigestPretenuringFeedback(bool maximum_size_scavenge); | 
| 8656 | 8660 | 
| 8657   inline ElementsKind GetElementsKind(); | 8661   inline ElementsKind GetElementsKind(); | 
| 8658   inline void SetElementsKind(ElementsKind kind); | 8662   inline void SetElementsKind(ElementsKind kind); | 
| 8659 | 8663 | 
| 8660   inline bool CanInlineCall(); | 8664   inline bool CanInlineCall(); | 
| 8661   inline void SetDoNotInlineCall(); | 8665   inline void SetDoNotInlineCall(); | 
| 8662 | 8666 | 
| 8663   inline bool SitePointsToLiteral(); | 8667   inline bool SitePointsToLiteral(); | 
| 8664 | 8668 | 
| 8665   static void DigestTransitionFeedback(Handle<AllocationSite> site, | 8669   template <AllocationSiteUpdateMode update_or_check = | 
|  | 8670                 AllocationSiteUpdateMode::kUpdate> | 
|  | 8671   static bool DigestTransitionFeedback(Handle<AllocationSite> site, | 
| 8666                                        ElementsKind to_kind); | 8672                                        ElementsKind to_kind); | 
| 8667 | 8673 | 
| 8668   DECLARE_PRINTER(AllocationSite) | 8674   DECLARE_PRINTER(AllocationSite) | 
| 8669   DECLARE_VERIFIER(AllocationSite) | 8675   DECLARE_VERIFIER(AllocationSite) | 
| 8670 | 8676 | 
| 8671   DECLARE_CAST(AllocationSite) | 8677   DECLARE_CAST(AllocationSite) | 
| 8672   static inline AllocationSiteMode GetMode( | 8678   static inline AllocationSiteMode GetMode( | 
| 8673       ElementsKind boilerplate_elements_kind); | 8679       ElementsKind boilerplate_elements_kind); | 
| 8674   static inline AllocationSiteMode GetMode(ElementsKind from, ElementsKind to); | 8680   static inline AllocationSiteMode GetMode(ElementsKind from, ElementsKind to); | 
| 8675   static inline bool CanTrack(InstanceType type); | 8681   static inline bool CanTrack(InstanceType type); | 
| (...skipping 2497 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 11173     } | 11179     } | 
| 11174     return value; | 11180     return value; | 
| 11175   } | 11181   } | 
| 11176 }; | 11182 }; | 
| 11177 | 11183 | 
| 11178 | 11184 | 
| 11179 }  // NOLINT, false-positive due to second-order macros. | 11185 }  // NOLINT, false-positive due to second-order macros. | 
| 11180 }  // NOLINT, false-positive due to second-order macros. | 11186 }  // NOLINT, false-positive due to second-order macros. | 
| 11181 | 11187 | 
| 11182 #endif  // V8_OBJECTS_H_ | 11188 #endif  // V8_OBJECTS_H_ | 
| OLD | NEW | 
|---|