Index: src/heap.h |
diff --git a/src/heap.h b/src/heap.h |
index 011ffd5e68b0179f4b524e8db227dbc952fe06b9..266cdb9684babcb887958522b7a5596aa181ff82 100644 |
--- a/src/heap.h |
+++ b/src/heap.h |
@@ -202,7 +202,8 @@ namespace internal { |
V(SeededNumberDictionary, empty_slow_element_dictionary, \ |
EmptySlowElementDictionary) \ |
V(Symbol, observed_symbol, ObservedSymbol) \ |
- V(FixedArray, materialized_objects, MaterializedObjects) |
+ V(FixedArray, materialized_objects, MaterializedObjects) \ |
+ V(FixedArray, allocation_sites_scratchpad, AllocationSitesScratchpad) |
#define ROOT_LIST(V) \ |
STRONG_ROOT_LIST(V) \ |
@@ -2285,6 +2286,18 @@ class Heap { |
// Flush the number to string cache. |
void FlushNumberStringCache(); |
+ // Allocates a fixed-size allocation sites scratchpad. |
+ MUST_USE_RESULT MaybeObject* AllocateAllocationSitesScratchpad(); |
+ |
+ // Sets used allocation sites entries to undefined. |
+ void FlushAllocationSitesScratchpad(); |
+ |
+ // Initializes the allocation sites scratchpad with undefined values. |
+ void InitializeAllocationSitesScratchpad(); |
+ |
+ // Adds an allocation site to the scratchpad if there is space left. |
+ void AddAllocationSiteToScratchpad(AllocationSite* site); |
+ |
void UpdateSurvivalRateTrend(int start_new_space_size); |
enum SurvivalRateTrend { INCREASING, STABLE, DECREASING, FLUCTUATING }; |
@@ -2457,10 +2470,8 @@ class Heap { |
int no_weak_object_verification_scope_depth_; |
#endif |
- |
static const int kAllocationSiteScratchpadSize = 256; |
- int allocation_sites_scratchpad_length; |
- AllocationSite* allocation_sites_scratchpad[kAllocationSiteScratchpadSize]; |
+ int allocation_sites_scratchpad_length_; |
static const int kMaxMarkSweepsInIdleRound = 7; |
static const int kIdleScavengeThreshold = 5; |