< prev index next >
src/share/vm/gc/shared/genOopClosures.hpp
Print this page
rev 9847 : 8146395: Add inline qualifier in oop.hpp and fix inlining in gc files
Summary: Fix remaining issues after 8146401
*** 144,170 ****
class FilteringClosure: public ExtendedOopClosure {
private:
HeapWord* _boundary;
ExtendedOopClosure* _cl;
protected:
! template <class T> inline void do_oop_work(T* p) {
! T heap_oop = oopDesc::load_heap_oop(p);
! if (!oopDesc::is_null(heap_oop)) {
! oop obj = oopDesc::decode_heap_oop_not_null(heap_oop);
! if ((HeapWord*)obj < _boundary) {
! _cl->do_oop(p);
! }
! }
! }
public:
FilteringClosure(HeapWord* boundary, ExtendedOopClosure* cl) :
ExtendedOopClosure(cl->ref_processor()), _boundary(boundary),
_cl(cl) {}
virtual void do_oop(oop* p);
virtual void do_oop(narrowOop* p);
! inline void do_oop_nv(oop* p) { FilteringClosure::do_oop_work(p); }
! inline void do_oop_nv(narrowOop* p) { FilteringClosure::do_oop_work(p); }
virtual bool do_metadata() { return do_metadata_nv(); }
inline bool do_metadata_nv() { assert(!_cl->do_metadata(), "assumption broken, must change to 'return _cl->do_metadata()'"); return false; }
};
// Closure for scanning DefNewGeneration's weak references.
--- 144,162 ----
class FilteringClosure: public ExtendedOopClosure {
private:
HeapWord* _boundary;
ExtendedOopClosure* _cl;
protected:
! template <class T> inline void do_oop_work(T* p);
public:
FilteringClosure(HeapWord* boundary, ExtendedOopClosure* cl) :
ExtendedOopClosure(cl->ref_processor()), _boundary(boundary),
_cl(cl) {}
virtual void do_oop(oop* p);
virtual void do_oop(narrowOop* p);
! inline void do_oop_nv(oop* p);
! inline void do_oop_nv(narrowOop* p);
virtual bool do_metadata() { return do_metadata_nv(); }
inline bool do_metadata_nv() { assert(!_cl->do_metadata(), "assumption broken, must change to 'return _cl->do_metadata()'"); return false; }
};
// Closure for scanning DefNewGeneration's weak references.
< prev index next >