1.1 --- a/src/share/vm/gc_implementation/g1/concurrentMark.hpp Mon Jun 13 13:48:18 2011 +0200 1.2 +++ b/src/share/vm/gc_implementation/g1/concurrentMark.hpp Tue Jun 14 10:33:43 2011 -0400 1.3 @@ -131,22 +131,22 @@ 1.4 void mark(HeapWord* addr) { 1.5 assert(_bmStartWord <= addr && addr < (_bmStartWord + _bmWordSize), 1.6 "outside underlying space?"); 1.7 - _bm.at_put(heapWordToOffset(addr), true); 1.8 + _bm.set_bit(heapWordToOffset(addr)); 1.9 } 1.10 void clear(HeapWord* addr) { 1.11 assert(_bmStartWord <= addr && addr < (_bmStartWord + _bmWordSize), 1.12 "outside underlying space?"); 1.13 - _bm.at_put(heapWordToOffset(addr), false); 1.14 + _bm.clear_bit(heapWordToOffset(addr)); 1.15 } 1.16 bool parMark(HeapWord* addr) { 1.17 assert(_bmStartWord <= addr && addr < (_bmStartWord + _bmWordSize), 1.18 "outside underlying space?"); 1.19 - return _bm.par_at_put(heapWordToOffset(addr), true); 1.20 + return _bm.par_set_bit(heapWordToOffset(addr)); 1.21 } 1.22 bool parClear(HeapWord* addr) { 1.23 assert(_bmStartWord <= addr && addr < (_bmStartWord + _bmWordSize), 1.24 "outside underlying space?"); 1.25 - return _bm.par_at_put(heapWordToOffset(addr), false); 1.26 + return _bm.par_clear_bit(heapWordToOffset(addr)); 1.27 } 1.28 void markRange(MemRegion mr); 1.29 void clearAll(); 1.30 @@ -928,7 +928,7 @@ 1.31 double _start_time_ms; 1.32 1.33 // the oop closure used for iterations over oops 1.34 - OopClosure* _oop_closure; 1.35 + G1CMOopClosure* _cm_oop_closure; 1.36 1.37 // the region this task is scanning, NULL if we're not scanning any 1.38 HeapRegion* _curr_region; 1.39 @@ -1122,32 +1122,17 @@ 1.40 // Clears any recorded partially scanned region 1.41 void clear_aborted_region() { set_aborted_region(MemRegion()); } 1.42 1.43 - void set_oop_closure(OopClosure* oop_closure) { 1.44 - _oop_closure = oop_closure; 1.45 - } 1.46 + void set_cm_oop_closure(G1CMOopClosure* cm_oop_closure); 1.47 1.48 // It grays the object by marking it and, if necessary, pushing it 1.49 // on the local queue 1.50 - void deal_with_reference(oop obj); 1.51 + inline void deal_with_reference(oop obj); 1.52 1.53 // It scans an object and visits its children. 1.54 - void scan_object(oop obj) { 1.55 - assert(_nextMarkBitMap->isMarked((HeapWord*) obj), "invariant"); 1.56 - 1.57 - if (_cm->verbose_high()) 1.58 - gclog_or_tty->print_cr("[%d] we're scanning object "PTR_FORMAT, 1.59 - _task_id, (void*) obj); 1.60 - 1.61 - size_t obj_size = obj->size(); 1.62 - _words_scanned += obj_size; 1.63 - 1.64 - obj->oop_iterate(_oop_closure); 1.65 - statsOnly( ++_objs_scanned ); 1.66 - check_limits(); 1.67 - } 1.68 + void scan_object(oop obj); 1.69 1.70 // It pushes an object on the local queue. 1.71 - void push(oop obj); 1.72 + inline void push(oop obj); 1.73 1.74 // These two move entries to/from the global stack. 1.75 void move_entries_to_global_stack();