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

Side by Side Diff: src/mark-compact.h

Issue 403543002: Make GCTracer persistent. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Remove destr and initialize last gc timestamp. Created 6 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 | Annotate | Revision Log
« no previous file with comments | « src/heap.cc ('k') | src/mark-compact.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_MARK_COMPACT_H_ 5 #ifndef V8_MARK_COMPACT_H_
6 #define V8_MARK_COMPACT_H_ 6 #define V8_MARK_COMPACT_H_
7 7
8 #include "src/compiler-intrinsics.h" 8 #include "src/compiler-intrinsics.h"
9 #include "src/spaces.h" 9 #include "src/spaces.h"
10 10
11 namespace v8 { 11 namespace v8 {
12 namespace internal { 12 namespace internal {
13 13
14 // Callback function, returns whether an object is alive. The heap size 14 // Callback function, returns whether an object is alive. The heap size
15 // of the object is returned in size. It optionally updates the offset 15 // of the object is returned in size. It optionally updates the offset
16 // to the first live object in the page (only used for old and map objects). 16 // to the first live object in the page (only used for old and map objects).
17 typedef bool (*IsAliveFunction)(HeapObject* obj, int* size, int* offset); 17 typedef bool (*IsAliveFunction)(HeapObject* obj, int* size, int* offset);
18 18
19 // Forward declarations. 19 // Forward declarations.
20 class CodeFlusher; 20 class CodeFlusher;
21 class GCTracer;
22 class MarkCompactCollector; 21 class MarkCompactCollector;
23 class MarkingVisitor; 22 class MarkingVisitor;
24 class RootMarkingVisitor; 23 class RootMarkingVisitor;
25 24
26 25
27 class Marking { 26 class Marking {
28 public: 27 public:
29 explicit Marking(Heap* heap) 28 explicit Marking(Heap* heap)
30 : heap_(heap) { 29 : heap_(heap) {
31 } 30 }
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 void SetUp(); 520 void SetUp();
522 521
523 void TearDown(); 522 void TearDown();
524 523
525 void CollectEvacuationCandidates(PagedSpace* space); 524 void CollectEvacuationCandidates(PagedSpace* space);
526 525
527 void AddEvacuationCandidate(Page* p); 526 void AddEvacuationCandidate(Page* p);
528 527
529 // Prepares for GC by resetting relocation info in old and map spaces and 528 // Prepares for GC by resetting relocation info in old and map spaces and
530 // choosing spaces to compact. 529 // choosing spaces to compact.
531 void Prepare(GCTracer* tracer); 530 void Prepare();
532 531
533 // Performs a global garbage collection. 532 // Performs a global garbage collection.
534 void CollectGarbage(); 533 void CollectGarbage();
535 534
536 enum CompactionMode { 535 enum CompactionMode {
537 INCREMENTAL_COMPACTION, 536 INCREMENTAL_COMPACTION,
538 NON_INCREMENTAL_COMPACTION 537 NON_INCREMENTAL_COMPACTION
539 }; 538 };
540 539
541 bool StartCompaction(CompactionMode mode); 540 bool StartCompaction(CompactionMode mode);
542 541
543 void AbortCompaction(); 542 void AbortCompaction();
544 543
545 // During a full GC, there is a stack-allocated GCTracer that is used for
546 // bookkeeping information. Return a pointer to that tracer.
547 GCTracer* tracer() { return tracer_; }
548
549 #ifdef DEBUG 544 #ifdef DEBUG
550 // Checks whether performing mark-compact collection. 545 // Checks whether performing mark-compact collection.
551 bool in_use() { return state_ > PREPARE_GC; } 546 bool in_use() { return state_ > PREPARE_GC; }
552 bool are_map_pointers_encoded() { return state_ == UPDATE_POINTERS; } 547 bool are_map_pointers_encoded() { return state_ == UPDATE_POINTERS; }
553 #endif 548 #endif
554 549
555 // Determine type of object and emit deletion log event. 550 // Determine type of object and emit deletion log event.
556 static void ReportDeleteIfNeeded(HeapObject* obj, Isolate* isolate); 551 static void ReportDeleteIfNeeded(HeapObject* obj, Isolate* isolate);
557 552
558 // Distinguishable invalid map encodings (for single word and multiple words) 553 // Distinguishable invalid map encodings (for single word and multiple words)
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
738 733
739 bool was_marked_incrementally_; 734 bool was_marked_incrementally_;
740 735
741 // True if concurrent or parallel sweeping is currently in progress. 736 // True if concurrent or parallel sweeping is currently in progress.
742 bool sweeping_in_progress_; 737 bool sweeping_in_progress_;
743 738
744 base::Semaphore pending_sweeper_jobs_semaphore_; 739 base::Semaphore pending_sweeper_jobs_semaphore_;
745 740
746 bool sequential_sweeping_; 741 bool sequential_sweeping_;
747 742
748 // A pointer to the current stack-allocated GC tracer object during a full
749 // collection (NULL before and after).
750 GCTracer* tracer_;
751
752 SlotsBufferAllocator slots_buffer_allocator_; 743 SlotsBufferAllocator slots_buffer_allocator_;
753 744
754 SlotsBuffer* migration_slots_buffer_; 745 SlotsBuffer* migration_slots_buffer_;
755 746
756 // Finishes GC, performs heap verification if enabled. 747 // Finishes GC, performs heap verification if enabled.
757 void Finish(); 748 void Finish();
758 749
759 // ----------------------------------------------------------------------- 750 // -----------------------------------------------------------------------
760 // Phase 1: Marking live objects. 751 // Phase 1: Marking live objects.
761 // 752 //
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 private: 976 private:
986 MarkCompactCollector* collector_; 977 MarkCompactCollector* collector_;
987 }; 978 };
988 979
989 980
990 const char* AllocationSpaceName(AllocationSpace space); 981 const char* AllocationSpaceName(AllocationSpace space);
991 982
992 } } // namespace v8::internal 983 } } // namespace v8::internal
993 984
994 #endif // V8_MARK_COMPACT_H_ 985 #endif // V8_MARK_COMPACT_H_
OLDNEW
« no previous file with comments | « src/heap.cc ('k') | src/mark-compact.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698