< prev index next >
src/share/vm/memory/cardTableModRefBS.hpp
Print this page
rev 7800 : [mq]: cleanupOopInlineHpp
*** 25,35 ****
#ifndef SHARE_VM_MEMORY_CARDTABLEMODREFBS_HPP
#define SHARE_VM_MEMORY_CARDTABLEMODREFBS_HPP
#include "memory/modRefBarrierSet.hpp"
#include "oops/oop.hpp"
- #include "oops/oop.inline2.hpp"
// This kind of "BarrierSet" allows a "CollectedHeap" to detect and
// enumerate ref fields that have been modified (since the last
// enumeration.)
--- 25,34 ----
*** 43,52 ****
--- 42,52 ----
class Generation;
class OopsInGenClosure;
class DirtyCardToOopClosure;
class ClearNoncleanCardWrapper;
+ class CardTableRS;
class CardTableModRefBS: public ModRefBarrierSet {
// Some classes get to look at some private stuff.
friend class BytecodeInterpreter;
friend class VMStructs;
*** 331,349 ****
// *** Card-table-barrier-specific things.
template <class T> inline void inline_write_ref_field_pre(T* field, oop newVal) {}
! template <class T> inline void inline_write_ref_field(T* field, oop newVal, bool release) {
! jbyte* byte = byte_for((void*)field);
! if (release) {
! // Perform a releasing store if requested.
! OrderAccess::release_store((volatile jbyte*) byte, dirty_card);
! } else {
! *byte = dirty_card;
! }
! }
// These are used by G1, when it uses the card table as a temporary data
// structure for card claiming.
bool is_card_dirty(size_t card_index) {
return _byte_map[card_index] == dirty_card_val();
--- 331,341 ----
// *** Card-table-barrier-specific things.
template <class T> inline void inline_write_ref_field_pre(T* field, oop newVal) {}
! template <class T> inline void inline_write_ref_field(T* field, oop newVal, bool release);
// These are used by G1, when it uses the card table as a temporary data
// structure for card claiming.
bool is_card_dirty(size_t card_index) {
return _byte_map[card_index] == dirty_card_val();
< prev index next >