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

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

Issue 1352453004: Perform scavenge in idle tasks. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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
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
11 #include "src/allocation.h" 11 #include "src/allocation.h"
12 #include "src/assert-scope.h" 12 #include "src/assert-scope.h"
13 #include "src/atomic-utils.h" 13 #include "src/atomic-utils.h"
14 #include "src/globals.h" 14 #include "src/globals.h"
15 #include "src/heap/gc-idle-time-handler.h" 15 #include "src/heap/gc-idle-time-handler.h"
16 #include "src/heap/incremental-marking.h" 16 #include "src/heap/incremental-marking.h"
17 #include "src/heap/mark-compact.h" 17 #include "src/heap/mark-compact.h"
18 #include "src/heap/scavenge-job.h"
Hannes Payer (out of office) 2015/09/21 09:00:57 Move this include to heap.cc
18 #include "src/heap/spaces.h" 19 #include "src/heap/spaces.h"
19 #include "src/heap/store-buffer.h" 20 #include "src/heap/store-buffer.h"
20 #include "src/list.h" 21 #include "src/list.h"
21 22
22 namespace v8 { 23 namespace v8 {
23 namespace internal { 24 namespace internal {
24 25
25 // Defines all the roots in Heap. 26 // Defines all the roots in Heap.
26 #define STRONG_ROOT_LIST(V) \ 27 #define STRONG_ROOT_LIST(V) \
27 V(Map, byte_array_map, ByteArrayMap) \ 28 V(Map, byte_array_map, ByteArrayMap) \
(...skipping 1152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1180 // Inline allocation. ======================================================== 1181 // Inline allocation. ========================================================
1181 // =========================================================================== 1182 // ===========================================================================
1182 1183
1183 // Indicates whether inline bump-pointer allocation has been disabled. 1184 // Indicates whether inline bump-pointer allocation has been disabled.
1184 bool inline_allocation_disabled() { return inline_allocation_disabled_; } 1185 bool inline_allocation_disabled() { return inline_allocation_disabled_; }
1185 1186
1186 // Switch whether inline bump-pointer allocation should be used. 1187 // Switch whether inline bump-pointer allocation should be used.
1187 void EnableInlineAllocation(); 1188 void EnableInlineAllocation();
1188 void DisableInlineAllocation(); 1189 void DisableInlineAllocation();
1189 1190
1191 // Update the inline allocation limit.
1192 void LowerInlineAllocationLimit(intptr_t step);
1193 void ResetInlineAllocationLimit();
Hannes Payer (out of office) 2015/09/21 09:00:57 We should not expose them on the public heap API.
ulan 2015/09/23 09:58:38 Incremental marker calls these functions.
Hannes Payer (out of office) 2015/09/23 14:16:39 As discussed offline, we make them friends and do
1194
1190 // =========================================================================== 1195 // ===========================================================================
1191 // Methods triggering GCs. =================================================== 1196 // Methods triggering GCs. ===================================================
1192 // =========================================================================== 1197 // ===========================================================================
1193 1198
1194 // Performs garbage collection operation. 1199 // Performs garbage collection operation.
1195 // Returns whether there is a chance that another major GC could 1200 // Returns whether there is a chance that another major GC could
1196 // collect more garbage. 1201 // collect more garbage.
1197 inline bool CollectGarbage( 1202 inline bool CollectGarbage(
1198 AllocationSpace space, const char* gc_reason = NULL, 1203 AllocationSpace space, const char* gc_reason = NULL,
1199 const GCCallbackFlags gc_callback_flags = kNoGCCallbackFlags); 1204 const GCCallbackFlags gc_callback_flags = kNoGCCallbackFlags);
1200 1205
1201 // Performs a full garbage collection. If (flags & kMakeHeapIterableMask) is 1206 // Performs a full garbage collection. If (flags & kMakeHeapIterableMask) is
1202 // non-zero, then the slower precise sweeper is used, which leaves the heap 1207 // non-zero, then the slower precise sweeper is used, which leaves the heap
1203 // in a state where we can iterate over the heap visiting all objects. 1208 // in a state where we can iterate over the heap visiting all objects.
1204 void CollectAllGarbage( 1209 void CollectAllGarbage(
1205 int flags = kFinalizeIncrementalMarkingMask, const char* gc_reason = NULL, 1210 int flags = kFinalizeIncrementalMarkingMask, const char* gc_reason = NULL,
1206 const GCCallbackFlags gc_callback_flags = kNoGCCallbackFlags); 1211 const GCCallbackFlags gc_callback_flags = kNoGCCallbackFlags);
1207 1212
1208 // Last hope GC, should try to squeeze as much as possible. 1213 // Last hope GC, should try to squeeze as much as possible.
1209 void CollectAllAvailableGarbage(const char* gc_reason = NULL); 1214 void CollectAllAvailableGarbage(const char* gc_reason = NULL);
1210 1215
1211 // Invoked when GC was requested via the stack guard. 1216 // Invoked when GC was requested via the stack guard.
1212 void HandleGCRequest(); 1217 void HandleGCRequest();
1213 1218
1219 // Schedule idle scavenge job.
1220 void ScheduleIdleScavenge(int bytes_allocated);
Hannes Payer (out of office) 2015/09/21 09:00:57 This one should be private as well.
ulan 2015/09/23 09:58:38 This is called by NewSpace on interrupt.
1221
1214 // =========================================================================== 1222 // ===========================================================================
1215 // Iterators. ================================================================ 1223 // Iterators. ================================================================
1216 // =========================================================================== 1224 // ===========================================================================
1217 1225
1218 // Iterates over all roots in the heap. 1226 // Iterates over all roots in the heap.
1219 void IterateRoots(ObjectVisitor* v, VisitMode mode); 1227 void IterateRoots(ObjectVisitor* v, VisitMode mode);
1220 // Iterates over all strong roots in the heap. 1228 // Iterates over all strong roots in the heap.
1221 void IterateStrongRoots(ObjectVisitor* v, VisitMode mode); 1229 void IterateStrongRoots(ObjectVisitor* v, VisitMode mode);
1222 // Iterates over entries in the smi roots list. Only interesting to the 1230 // Iterates over entries in the smi roots list. Only interesting to the
1223 // serializer/deserializer, since GC does not care about smis. 1231 // serializer/deserializer, since GC does not care about smis.
(...skipping 1034 matching lines...) Expand 10 before | Expand all | Expand 10 after
2258 StoreBuffer store_buffer_; 2266 StoreBuffer store_buffer_;
2259 2267
2260 IncrementalMarking incremental_marking_; 2268 IncrementalMarking incremental_marking_;
2261 2269
2262 GCIdleTimeHandler gc_idle_time_handler_; 2270 GCIdleTimeHandler gc_idle_time_handler_;
2263 2271
2264 MemoryReducer* memory_reducer_; 2272 MemoryReducer* memory_reducer_;
2265 2273
2266 ObjectStats* object_stats_; 2274 ObjectStats* object_stats_;
2267 2275
2276 ScavengeJob scavenge_job_;
Hannes Payer (out of office) 2015/09/21 09:00:57 If you make ScavengeJob a ScavengeJob*, you don't
ulan 2015/09/23 09:58:38 Done.
2277
2268 // These two counters are monotomically increasing and never reset. 2278 // These two counters are monotomically increasing and never reset.
2269 size_t full_codegen_bytes_generated_; 2279 size_t full_codegen_bytes_generated_;
2270 size_t crankshaft_codegen_bytes_generated_; 2280 size_t crankshaft_codegen_bytes_generated_;
2271 2281
2272 // This counter is increased before each GC and never reset. 2282 // This counter is increased before each GC and never reset.
2273 // To account for the bytes allocated since the last GC, use the 2283 // To account for the bytes allocated since the last GC, use the
2274 // NewSpaceAllocationCounter() function. 2284 // NewSpaceAllocationCounter() function.
2275 size_t new_space_allocation_counter_; 2285 size_t new_space_allocation_counter_;
2276 2286
2277 // This counter is increased before each GC and never reset. To 2287 // This counter is increased before each GC and never reset. To
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
2699 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. 2709 DisallowHeapAllocation no_allocation; // i.e. no gc allowed.
2700 2710
2701 private: 2711 private:
2702 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); 2712 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer);
2703 }; 2713 };
2704 #endif // DEBUG 2714 #endif // DEBUG
2705 } 2715 }
2706 } // namespace v8::internal 2716 } // namespace v8::internal
2707 2717
2708 #endif // V8_HEAP_HEAP_H_ 2718 #endif // V8_HEAP_HEAP_H_
OLDNEW
« no previous file with comments | « src/heap/gc-idle-time-handler.cc ('k') | src/heap/heap.cc » ('j') | src/heap/heap.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698