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

Side by Side Diff: runtime/vm/heap.h

Issue 3001343002: Remove GC prologue and epilogue callbacks. (Closed)
Patch Set: Created 3 years, 4 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 | « runtime/vm/gc_marker.cc ('k') | runtime/vm/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 (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef RUNTIME_VM_HEAP_H_ 5 #ifndef RUNTIME_VM_HEAP_H_
6 #define RUNTIME_VM_HEAP_H_ 6 #define RUNTIME_VM_HEAP_H_
7 7
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/allocation.h" 9 #include "vm/allocation.h"
10 #include "vm/flags.h" 10 #include "vm/flags.h"
(...skipping 24 matching lines...) Expand all
35 35
36 enum WeakSelector { 36 enum WeakSelector {
37 kPeers = 0, 37 kPeers = 0,
38 #if !defined(HASH_IN_OBJECT_HEADER) 38 #if !defined(HASH_IN_OBJECT_HEADER)
39 kHashes, 39 kHashes,
40 #endif 40 #endif
41 kObjectIds, 41 kObjectIds,
42 kNumWeakSelectors 42 kNumWeakSelectors
43 }; 43 };
44 44
45 enum ApiCallbacks { kIgnoreApiCallbacks, kInvokeApiCallbacks };
46
47 enum GCReason { 45 enum GCReason {
48 kNewSpace, 46 kNewSpace,
49 kPromotion, 47 kPromotion,
50 kOldSpace, 48 kOldSpace,
51 kFull, 49 kFull,
52 kGCAtAlloc, 50 kGCAtAlloc,
53 kGCTestCase, 51 kGCTestCase,
54 }; 52 };
55 53
56 // Pattern for unused new space and swept old space. 54 // Pattern for unused new space and swept old space.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 // point. 98 // point.
101 // The 'visitor' function should return false if the object is not found, 99 // The 'visitor' function should return false if the object is not found,
102 // traversal through the heap space continues. 100 // traversal through the heap space continues.
103 // Returns null object if nothing is found. 101 // Returns null object if nothing is found.
104 RawInstructions* FindObjectInCodeSpace(FindObjectVisitor* visitor) const; 102 RawInstructions* FindObjectInCodeSpace(FindObjectVisitor* visitor) const;
105 RawObject* FindOldObject(FindObjectVisitor* visitor) const; 103 RawObject* FindOldObject(FindObjectVisitor* visitor) const;
106 RawObject* FindNewObject(FindObjectVisitor* visitor) const; 104 RawObject* FindNewObject(FindObjectVisitor* visitor) const;
107 RawObject* FindObject(FindObjectVisitor* visitor) const; 105 RawObject* FindObject(FindObjectVisitor* visitor) const;
108 106
109 void CollectGarbage(Space space); 107 void CollectGarbage(Space space);
110 void CollectGarbage(Space space, ApiCallbacks api_callbacks, GCReason reason); 108 void CollectGarbage(Space space, GCReason reason);
111 void CollectAllGarbage(); 109 void CollectAllGarbage();
112 bool NeedsGarbageCollection() const { 110 bool NeedsGarbageCollection() const {
113 return old_space_.NeedsGarbageCollection(); 111 return old_space_.NeedsGarbageCollection();
114 } 112 }
115 113
116 void WaitForSweeperTasks(Thread* thread); 114 void WaitForSweeperTasks(Thread* thread);
117 115
118 // Enables growth control on the page space heaps. This should be 116 // Enables growth control on the page space heaps. This should be
119 // called before any user code is executed. 117 // called before any user code is executed.
120 void InitGrowthControl(); 118 void InitGrowthControl();
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 void VisitObjects(ObjectVisitor* visitor) const; 303 void VisitObjects(ObjectVisitor* visitor) const;
306 void VisitObjectsNoImagePages(ObjectVisitor* visitor) const; 304 void VisitObjectsNoImagePages(ObjectVisitor* visitor) const;
307 void VisitObjectsImagePages(ObjectVisitor* visitor) const; 305 void VisitObjectsImagePages(ObjectVisitor* visitor) const;
308 306
309 // Like Verify, but does not wait for concurrent sweeper, so caller must 307 // Like Verify, but does not wait for concurrent sweeper, so caller must
310 // ensure thread-safety. 308 // ensure thread-safety.
311 bool VerifyGC(MarkExpectation mark_expectation = kForbidMarked) const; 309 bool VerifyGC(MarkExpectation mark_expectation = kForbidMarked) const;
312 310
313 // Helper functions for garbage collection. 311 // Helper functions for garbage collection.
314 void CollectNewSpaceGarbage(Thread* thread, 312 void CollectNewSpaceGarbage(Thread* thread,
315 ApiCallbacks api_callbacks,
316 GCReason reason); 313 GCReason reason);
317 void CollectOldSpaceGarbage(Thread* thread, 314 void CollectOldSpaceGarbage(Thread* thread,
318 ApiCallbacks api_callbacks,
319 GCReason reason); 315 GCReason reason);
320 void EvacuateNewSpace(Thread* thread, GCReason reason); 316 void EvacuateNewSpace(Thread* thread, GCReason reason);
321 317
322 // GC stats collection. 318 // GC stats collection.
323 void RecordBeforeGC(Space space, GCReason reason); 319 void RecordBeforeGC(Space space, GCReason reason);
324 void RecordAfterGC(Space space); 320 void RecordAfterGC(Space space);
325 void PrintStats(); 321 void PrintStats();
326 void UpdateClassHeapStatsBeforeGC(Heap::Space space); 322 void UpdateClassHeapStatsBeforeGC(Heap::Space space);
327 void PrintStatsToTimeline(TimelineEventScope* event); 323 void PrintStatsToTimeline(TimelineEventScope* event);
328 324
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 // Note: During this scope, the code pages are non-executable. 403 // Note: During this scope, the code pages are non-executable.
408 class WritableVMIsolateScope : StackResource { 404 class WritableVMIsolateScope : StackResource {
409 public: 405 public:
410 explicit WritableVMIsolateScope(Thread* thread); 406 explicit WritableVMIsolateScope(Thread* thread);
411 ~WritableVMIsolateScope(); 407 ~WritableVMIsolateScope();
412 }; 408 };
413 409
414 } // namespace dart 410 } // namespace dart
415 411
416 #endif // RUNTIME_VM_HEAP_H_ 412 #endif // RUNTIME_VM_HEAP_H_
OLDNEW
« no previous file with comments | « runtime/vm/gc_marker.cc ('k') | runtime/vm/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698