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

Side by Side Diff: src/objects.h

Issue 2252393002: [elements, turbofan] Implement simple GrowElements (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix Android build Created 4 years, 3 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
« no previous file with comments | « src/elements.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 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
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
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
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
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_
OLDNEW
« no previous file with comments | « src/elements.cc ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698