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

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

Issue 1090963002: Use smaller heap growing factor in idle notification to start incremental marking when there is idl… (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 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/heap/gc-idle-time-handler.h ('k') | 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 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 void UpdateMaximumCommitted(); 627 void UpdateMaximumCommitted();
628 628
629 // Returns the available bytes in space w/o growing. 629 // Returns the available bytes in space w/o growing.
630 // Heap doesn't guarantee that it can allocate an object that requires 630 // Heap doesn't guarantee that it can allocate an object that requires
631 // all available bytes. Check MaxHeapObjectSize() instead. 631 // all available bytes. Check MaxHeapObjectSize() instead.
632 intptr_t Available(); 632 intptr_t Available();
633 633
634 // Returns of size of all objects residing in the heap. 634 // Returns of size of all objects residing in the heap.
635 intptr_t SizeOfObjects(); 635 intptr_t SizeOfObjects();
636 636
637 intptr_t old_generation_allocation_limit() const {
638 return old_generation_allocation_limit_;
639 }
640
637 // Return the starting address and a mask for the new space. And-masking an 641 // Return the starting address and a mask for the new space. And-masking an
638 // address with the mask will result in the start address of the new space 642 // address with the mask will result in the start address of the new space
639 // for all addresses in either semispace. 643 // for all addresses in either semispace.
640 Address NewSpaceStart() { return new_space_.start(); } 644 Address NewSpaceStart() { return new_space_.start(); }
641 uintptr_t NewSpaceMask() { return new_space_.mask(); } 645 uintptr_t NewSpaceMask() { return new_space_.mask(); }
642 Address NewSpaceTop() { return new_space_.top(); } 646 Address NewSpaceTop() { return new_space_.top(); }
643 647
644 NewSpace* new_space() { return &new_space_; } 648 NewSpace* new_space() { return &new_space_; }
645 OldSpace* old_space() { return old_space_; } 649 OldSpace* old_space() { return old_space_; }
646 OldSpace* code_space() { return code_space_; } 650 OldSpace* code_space() { return code_space_; }
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after
1113 // The executable size has to be a multiple of Page::kPageSize. 1117 // The executable size has to be a multiple of Page::kPageSize.
1114 // Sizes are in MB. 1118 // Sizes are in MB.
1115 static const int kMaxExecutableSizeLowMemoryDevice = 96 * kPointerMultiplier; 1119 static const int kMaxExecutableSizeLowMemoryDevice = 96 * kPointerMultiplier;
1116 static const int kMaxExecutableSizeMediumMemoryDevice = 1120 static const int kMaxExecutableSizeMediumMemoryDevice =
1117 192 * kPointerMultiplier; 1121 192 * kPointerMultiplier;
1118 static const int kMaxExecutableSizeHighMemoryDevice = 1122 static const int kMaxExecutableSizeHighMemoryDevice =
1119 256 * kPointerMultiplier; 1123 256 * kPointerMultiplier;
1120 static const int kMaxExecutableSizeHugeMemoryDevice = 1124 static const int kMaxExecutableSizeHugeMemoryDevice =
1121 256 * kPointerMultiplier; 1125 256 * kPointerMultiplier;
1122 1126
1123 intptr_t OldGenerationAllocationLimit(intptr_t old_gen_size, 1127 // Calculates the allocation limit based on a given growing factor and a
1124 int freed_global_handles); 1128 // given old generation size.
1129 intptr_t CalculateOldGenerationAllocationLimit(double factor,
1130 intptr_t old_gen_size);
1131
1132 // Sets the allocation limit to trigger the next full garbage collection.
1133 void SetOldGenerationAllocationLimit(intptr_t old_gen_size,
1134 int freed_global_handles);
1125 1135
1126 // Indicates whether inline bump-pointer allocation has been disabled. 1136 // Indicates whether inline bump-pointer allocation has been disabled.
1127 bool inline_allocation_disabled() { return inline_allocation_disabled_; } 1137 bool inline_allocation_disabled() { return inline_allocation_disabled_; }
1128 1138
1129 // Switch whether inline bump-pointer allocation should be used. 1139 // Switch whether inline bump-pointer allocation should be used.
1130 void EnableInlineAllocation(); 1140 void EnableInlineAllocation();
1131 void DisableInlineAllocation(); 1141 void DisableInlineAllocation();
1132 1142
1133 // Implements the corresponding V8 API function. 1143 // Implements the corresponding V8 API function.
1134 bool IdleNotification(double deadline_in_seconds); 1144 bool IdleNotification(double deadline_in_seconds);
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1220 inline void IncrementNodesCopiedInNewSpace() { nodes_copied_in_new_space_++; } 1230 inline void IncrementNodesCopiedInNewSpace() { nodes_copied_in_new_space_++; }
1221 1231
1222 inline void IncrementNodesPromoted() { nodes_promoted_++; } 1232 inline void IncrementNodesPromoted() { nodes_promoted_++; }
1223 1233
1224 inline void IncrementYoungSurvivorsCounter(int survived) { 1234 inline void IncrementYoungSurvivorsCounter(int survived) {
1225 DCHECK(survived >= 0); 1235 DCHECK(survived >= 0);
1226 survived_last_scavenge_ = survived; 1236 survived_last_scavenge_ = survived;
1227 survived_since_last_expansion_ += survived; 1237 survived_since_last_expansion_ += survived;
1228 } 1238 }
1229 1239
1230 inline bool NextGCIsLikelyToBeFull() { 1240 inline bool NextGCIsLikelyToBeFull(intptr_t limit) {
1231 if (FLAG_gc_global) return true; 1241 if (FLAG_gc_global) return true;
1232 1242
1233 if (FLAG_stress_compaction && (gc_count_ & 1) != 0) return true; 1243 if (FLAG_stress_compaction && (gc_count_ & 1) != 0) return true;
1234 1244
1235 intptr_t adjusted_allocation_limit = 1245 intptr_t adjusted_allocation_limit = limit - new_space_.Capacity();
1236 old_generation_allocation_limit_ - new_space_.Capacity();
1237 1246
1238 if (PromotedTotalSize() >= adjusted_allocation_limit) return true; 1247 if (PromotedTotalSize() >= adjusted_allocation_limit) return true;
1239 1248
1240 return false; 1249 return false;
1241 } 1250 }
1242 1251
1243 void UpdateNewSpaceReferencesInExternalStringTable( 1252 void UpdateNewSpaceReferencesInExternalStringTable(
1244 ExternalStringTableUpdaterCallback updater_func); 1253 ExternalStringTableUpdaterCallback updater_func);
1245 1254
1246 void UpdateReferencesInExternalStringTable( 1255 void UpdateReferencesInExternalStringTable(
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
1629 // remain until the next failure and garbage collection. 1638 // remain until the next failure and garbage collection.
1630 int allocation_timeout_; 1639 int allocation_timeout_;
1631 #endif // DEBUG 1640 #endif // DEBUG
1632 1641
1633 // Limit that triggers a global GC on the next (normally caused) GC. This 1642 // Limit that triggers a global GC on the next (normally caused) GC. This
1634 // is checked when we have already decided to do a GC to help determine 1643 // is checked when we have already decided to do a GC to help determine
1635 // which collector to invoke, before expanding a paged space in the old 1644 // which collector to invoke, before expanding a paged space in the old
1636 // generation and on every allocation in large object space. 1645 // generation and on every allocation in large object space.
1637 intptr_t old_generation_allocation_limit_; 1646 intptr_t old_generation_allocation_limit_;
1638 1647
1648 // The allocation limit when there is >16.66ms idle time in the idle time
1649 // handler.
1650 intptr_t idle_old_generation_allocation_limit_;
1651
1639 // Indicates that an allocation has failed in the old generation since the 1652 // Indicates that an allocation has failed in the old generation since the
1640 // last GC. 1653 // last GC.
1641 bool old_gen_exhausted_; 1654 bool old_gen_exhausted_;
1642 1655
1643 // Indicates that inline bump-pointer allocation has been globally disabled 1656 // Indicates that inline bump-pointer allocation has been globally disabled
1644 // for all spaces. This is used to disable allocations in generated code. 1657 // for all spaces. This is used to disable allocations in generated code.
1645 bool inline_allocation_disabled_; 1658 bool inline_allocation_disabled_;
1646 1659
1647 // Weak list heads, threaded through the objects. 1660 // Weak list heads, threaded through the objects.
1648 // List heads are initialized lazily and contain the undefined_value at start. 1661 // List heads are initialized lazily and contain the undefined_value at start.
(...skipping 960 matching lines...) Expand 10 before | Expand all | Expand 10 after
2609 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. 2622 DisallowHeapAllocation no_allocation; // i.e. no gc allowed.
2610 2623
2611 private: 2624 private:
2612 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); 2625 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer);
2613 }; 2626 };
2614 #endif // DEBUG 2627 #endif // DEBUG
2615 } 2628 }
2616 } // namespace v8::internal 2629 } // namespace v8::internal
2617 2630
2618 #endif // V8_HEAP_HEAP_H_ 2631 #endif // V8_HEAP_HEAP_H_
OLDNEW
« no previous file with comments | « src/heap/gc-idle-time-handler.h ('k') | src/heap/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698