src/share/vm/gc_implementation/g1/concurrentMark.hpp

changeset 2968
842b840e67db
parent 2910
69293e516993
child 2969
6747fd0512e0
     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();

mercurial