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

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

Issue 1998213002: Workaround for glibc semaphore bug. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 7 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_MARK_COMPACT_H_ 5 #ifndef V8_HEAP_MARK_COMPACT_H_
6 #define V8_HEAP_MARK_COMPACT_H_ 6 #define V8_HEAP_MARK_COMPACT_H_
7 7
8 #include <deque> 8 #include <deque>
9 9
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 637
638 explicit MarkCompactCollector(Heap* heap); 638 explicit MarkCompactCollector(Heap* heap);
639 639
640 bool WillBeDeoptimized(Code* code); 640 bool WillBeDeoptimized(Code* code);
641 void ClearInvalidRememberedSetSlots(); 641 void ClearInvalidRememberedSetSlots();
642 642
643 void ComputeEvacuationHeuristics(int area_size, 643 void ComputeEvacuationHeuristics(int area_size,
644 int* target_fragmentation_percent, 644 int* target_fragmentation_percent,
645 int* max_evacuated_bytes); 645 int* max_evacuated_bytes);
646 646
647 #ifdef DEBUG
ulan 2016/05/20 11:28:24 I moved this down.
648 enum CollectorState {
649 IDLE,
650 PREPARE_GC,
651 MARK_LIVE_OBJECTS,
652 SWEEP_SPACES,
653 ENCODE_FORWARDING_ADDRESSES,
654 UPDATE_POINTERS,
655 RELOCATE_OBJECTS
656 };
657
658 // The current stage of the collector.
659 CollectorState state_;
660 #endif
661
662 MarkingParity marking_parity_;
663
664 bool was_marked_incrementally_;
665
666 bool evacuation_;
667
668 // Finishes GC, performs heap verification if enabled. 647 // Finishes GC, performs heap verification if enabled.
669 void Finish(); 648 void Finish();
670 649
671 // ----------------------------------------------------------------------- 650 // -----------------------------------------------------------------------
672 // Phase 1: Marking live objects. 651 // Phase 1: Marking live objects.
673 // 652 //
674 // Before: The heap has been prepared for garbage collection by 653 // Before: The heap has been prepared for garbage collection by
675 // MarkCompactCollector::Prepare() and is otherwise in its 654 // MarkCompactCollector::Prepare() and is otherwise in its
676 // normal state. 655 // normal state.
677 // 656 //
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 822
844 #ifdef DEBUG 823 #ifdef DEBUG
845 friend class MarkObjectVisitor; 824 friend class MarkObjectVisitor;
846 static void VisitObject(HeapObject* obj); 825 static void VisitObject(HeapObject* obj);
847 826
848 friend class UnmarkObjectVisitor; 827 friend class UnmarkObjectVisitor;
849 static void UnmarkObject(HeapObject* obj); 828 static void UnmarkObject(HeapObject* obj);
850 #endif 829 #endif
851 830
852 Heap* heap_; 831 Heap* heap_;
832
833 base::Semaphore page_parallel_job_semaphore_;
834
835 #ifdef DEBUG
836 enum CollectorState {
837 IDLE,
838 PREPARE_GC,
839 MARK_LIVE_OBJECTS,
840 SWEEP_SPACES,
841 ENCODE_FORWARDING_ADDRESSES,
842 UPDATE_POINTERS,
843 RELOCATE_OBJECTS
844 };
845
846 // The current stage of the collector.
847 CollectorState state_;
848 #endif
849
850 MarkingParity marking_parity_;
851
852 bool was_marked_incrementally_;
853
854 bool evacuation_;
855
856 // True if we are collecting slots to perform evacuation from evacuation
857 // candidates.
858 bool compacting_;
859
860 bool black_allocation_;
861
862 bool have_code_to_deoptimize_;
863
853 base::VirtualMemory* marking_deque_memory_; 864 base::VirtualMemory* marking_deque_memory_;
854 size_t marking_deque_memory_committed_; 865 size_t marking_deque_memory_committed_;
855 MarkingDeque marking_deque_; 866 MarkingDeque marking_deque_;
856 std::vector<std::pair<void*, void*>> wrappers_to_trace_; 867 std::vector<std::pair<void*, void*>> wrappers_to_trace_;
857 868
858 CodeFlusher* code_flusher_; 869 CodeFlusher* code_flusher_;
859 870
860 EmbedderHeapTracer* embedder_heap_tracer_; 871 EmbedderHeapTracer* embedder_heap_tracer_;
861 872
862 bool have_code_to_deoptimize_;
863
864 List<Page*> evacuation_candidates_; 873 List<Page*> evacuation_candidates_;
865 List<Page*> newspace_evacuation_candidates_; 874 List<Page*> newspace_evacuation_candidates_;
866 875
867 // True if we are collecting slots to perform evacuation from evacuation
868 // candidates.
869 bool compacting_;
870
871 bool black_allocation_;
872
873 Sweeper sweeper_; 876 Sweeper sweeper_;
874 877
875 friend class Heap; 878 friend class Heap;
876 friend class StoreBuffer; 879 friend class StoreBuffer;
877 }; 880 };
878 881
879 882
880 class EvacuationScope BASE_EMBEDDED { 883 class EvacuationScope BASE_EMBEDDED {
881 public: 884 public:
882 explicit EvacuationScope(MarkCompactCollector* collector) 885 explicit EvacuationScope(MarkCompactCollector* collector)
883 : collector_(collector) { 886 : collector_(collector) {
884 collector_->set_evacuation(true); 887 collector_->set_evacuation(true);
885 } 888 }
886 889
887 ~EvacuationScope() { collector_->set_evacuation(false); } 890 ~EvacuationScope() { collector_->set_evacuation(false); }
888 891
889 private: 892 private:
890 MarkCompactCollector* collector_; 893 MarkCompactCollector* collector_;
891 }; 894 };
892 895
893 896
894 const char* AllocationSpaceName(AllocationSpace space); 897 const char* AllocationSpaceName(AllocationSpace space);
895 } // namespace internal 898 } // namespace internal
896 } // namespace v8 899 } // namespace v8
897 900
898 #endif // V8_HEAP_MARK_COMPACT_H_ 901 #endif // V8_HEAP_MARK_COMPACT_H_
OLDNEW
« no previous file with comments | « src/debug/debug.cc ('k') | src/heap/mark-compact.cc » ('j') | src/heap/page-parallel-job.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698