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

Side by Side Diff: src/heap/heap.h

Issue 1217813012: GC. Delay/avoid entering high promotion mode (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rename some variables with long names Created 5 years, 5 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 | « no previous file | src/heap/heap.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 // 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_HEAP_HEAP_H_ 5 #ifndef V8_HEAP_HEAP_H_
6 #define V8_HEAP_HEAP_H_ 6 #define V8_HEAP_HEAP_H_
7 7
8 #include <cmath> 8 #include <cmath>
9 #include <map> 9 #include <map>
10 10
(...skipping 1354 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 1365
1366 // This should be used only for testing. 1366 // This should be used only for testing.
1367 void set_old_generation_allocation_counter(size_t new_value) { 1367 void set_old_generation_allocation_counter(size_t new_value) {
1368 old_generation_allocation_counter_ = new_value; 1368 old_generation_allocation_counter_ = new_value;
1369 } 1369 }
1370 1370
1371 size_t PromotedSinceLastGC() { 1371 size_t PromotedSinceLastGC() {
1372 return PromotedSpaceSizeOfObjects() - old_generation_size_at_last_gc_; 1372 return PromotedSpaceSizeOfObjects() - old_generation_size_at_last_gc_;
1373 } 1373 }
1374 1374
1375 // Record the fact that we generated some optimized code since the last GC
1376 // which will pretenure some previously unpretenured allocation.
1377 void RecordDeoptForPretenuring() { gathering_lifetime_feedback_ = 2; }
1378
1375 // Update GC statistics that are tracked on the Heap. 1379 // Update GC statistics that are tracked on the Heap.
1376 void UpdateCumulativeGCStatistics(double duration, double spent_in_mutator, 1380 void UpdateCumulativeGCStatistics(double duration, double spent_in_mutator,
1377 double marking_time); 1381 double marking_time);
1378 1382
1379 // Returns maximum GC pause. 1383 // Returns maximum GC pause.
1380 double get_max_gc_pause() { return max_gc_pause_; } 1384 double get_max_gc_pause() { return max_gc_pause_; }
1381 1385
1382 // Returns maximum size of objects alive after GC. 1386 // Returns maximum size of objects alive after GC.
1383 intptr_t get_max_alive_after_gc() { return max_alive_after_gc_; } 1387 intptr_t get_max_alive_after_gc() { return max_alive_after_gc_; }
1384 1388
(...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after
2166 2170
2167 enum SurvivalRateTrend { INCREASING, STABLE, DECREASING, FLUCTUATING }; 2171 enum SurvivalRateTrend { INCREASING, STABLE, DECREASING, FLUCTUATING };
2168 2172
2169 static const int kYoungSurvivalRateHighThreshold = 90; 2173 static const int kYoungSurvivalRateHighThreshold = 90;
2170 static const int kYoungSurvivalRateLowThreshold = 10; 2174 static const int kYoungSurvivalRateLowThreshold = 10;
2171 static const int kYoungSurvivalRateAllowedDeviation = 15; 2175 static const int kYoungSurvivalRateAllowedDeviation = 15;
2172 2176
2173 static const int kOldSurvivalRateLowThreshold = 10; 2177 static const int kOldSurvivalRateLowThreshold = 10;
2174 2178
2175 bool new_space_high_promotion_mode_active_; 2179 bool new_space_high_promotion_mode_active_;
2180 // If this is non-zero, then there is hope yet that the optimized code we
2181 // have generated will solve our high promotion rate problems, so we don't
2182 // need to go into high promotion mode just yet.
2183 int gathering_lifetime_feedback_;
2176 int high_survival_rate_period_length_; 2184 int high_survival_rate_period_length_;
2177 intptr_t promoted_objects_size_; 2185 intptr_t promoted_objects_size_;
2178 int low_survival_rate_period_length_; 2186 int low_survival_rate_period_length_;
2179 double survival_rate_; 2187 double survival_rate_;
2180 double promotion_ratio_; 2188 double promotion_ratio_;
2181 double promotion_rate_; 2189 double promotion_rate_;
2182 intptr_t semi_space_copied_object_size_; 2190 intptr_t semi_space_copied_object_size_;
2183 intptr_t previous_semi_space_copied_object_size_; 2191 intptr_t previous_semi_space_copied_object_size_;
2184 double semi_space_copied_rate_; 2192 double semi_space_copied_rate_;
2185 int nodes_died_in_new_space_; 2193 int nodes_died_in_new_space_;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2232 return false; 2240 return false;
2233 } 2241 }
2234 } 2242 }
2235 2243
2236 bool IsIncreasingSurvivalTrend() { 2244 bool IsIncreasingSurvivalTrend() {
2237 return survival_rate_trend() == INCREASING; 2245 return survival_rate_trend() == INCREASING;
2238 } 2246 }
2239 2247
2240 bool IsLowSurvivalRate() { return low_survival_rate_period_length_ > 0; } 2248 bool IsLowSurvivalRate() { return low_survival_rate_period_length_ > 0; }
2241 2249
2242 // TODO(hpayer): Allocation site pretenuring may make this method obsolete.
2243 // Re-visit incremental marking heuristics.
2244 bool IsHighSurvivalRate() { return high_survival_rate_period_length_ > 0; } 2250 bool IsHighSurvivalRate() { return high_survival_rate_period_length_ > 0; }
2245 2251
2246 void ConfigureInitialOldGenerationSize(); 2252 void ConfigureInitialOldGenerationSize();
2247 2253
2248 void ConfigureNewGenerationSize(); 2254 void ConfigureNewGenerationSize();
2249 2255
2250 void SelectScavengingVisitorsTable(); 2256 void SelectScavengingVisitorsTable();
2251 2257
2252 bool HasLowYoungGenerationAllocationRate(); 2258 bool HasLowYoungGenerationAllocationRate();
2253 bool HasLowOldGenerationAllocationRate(); 2259 bool HasLowOldGenerationAllocationRate();
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after
2852 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. 2858 DisallowHeapAllocation no_allocation; // i.e. no gc allowed.
2853 2859
2854 private: 2860 private:
2855 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); 2861 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer);
2856 }; 2862 };
2857 #endif // DEBUG 2863 #endif // DEBUG
2858 } 2864 }
2859 } // namespace v8::internal 2865 } // namespace v8::internal
2860 2866
2861 #endif // V8_HEAP_HEAP_H_ 2867 #endif // V8_HEAP_HEAP_H_
OLDNEW
« no previous file with comments | « no previous file | src/heap/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698