comparison src/share/vm/gc_implementation/g1/concurrentMark.hpp @ 2037:b03260081e9b

7006113: G1: Initialize ReferenceProcessor::_is_alive_non_header field Summary: Initialize the _is_alive_non_header field of G1's reference processor with an instance of the G1CMIsAliveClosure. This will stop adding reference objects with live referents to the discovered reference lists unnecessarily. Reviewed-by: tonyp, ysr, jwilhelm, brutisso
author johnc
date Fri, 17 Dec 2010 11:26:53 -0800
parents f95d63e2154a
children 0fa27f37d4d4
comparison
equal deleted inserted replaced
2031:36eef023306f 2037:b03260081e9b
31 class G1CollectedHeap; 31 class G1CollectedHeap;
32 class CMTask; 32 class CMTask;
33 typedef GenericTaskQueue<oop> CMTaskQueue; 33 typedef GenericTaskQueue<oop> CMTaskQueue;
34 typedef GenericTaskQueueSet<CMTaskQueue> CMTaskQueueSet; 34 typedef GenericTaskQueueSet<CMTaskQueue> CMTaskQueueSet;
35 35
36 // Closure used by CM during concurrent reference discovery
37 // and reference processing (during remarking) to determine
38 // if a particular object is alive. It is primarily used
39 // to determine if referents of discovered reference objects
40 // are alive. An instance is also embedded into the
41 // reference processor as the _is_alive_non_header field
42 class G1CMIsAliveClosure: public BoolObjectClosure {
43 G1CollectedHeap* _g1;
44 public:
45 G1CMIsAliveClosure(G1CollectedHeap* g1) :
46 _g1(g1)
47 {}
48
49 void do_object(oop obj) {
50 ShouldNotCallThis();
51 }
52 bool do_object_b(oop obj);
53 };
54
36 // A generic CM bit map. This is essentially a wrapper around the BitMap 55 // A generic CM bit map. This is essentially a wrapper around the BitMap
37 // class, with one bit per (1<<_shifter) HeapWords. 56 // class, with one bit per (1<<_shifter) HeapWords.
38 57
39 class CMBitMapRO VALUE_OBJ_CLASS_SPEC { 58 class CMBitMapRO VALUE_OBJ_CLASS_SPEC {
40 protected: 59 protected: