< prev index next >

src/hotspot/share/gc/shared/cardTableBarrierSet.hpp

Print this page

 86   virtual void write_ref_array_pre(oop* dst, size_t length,
 87                                    bool dest_uninitialized) {}
 88   virtual void write_ref_array_pre(narrowOop* dst, size_t length,
 89                                    bool dest_uninitialized) {}
 90   // Below count is the # array elements being written, starting
 91   // at the address "start", which may not necessarily be HeapWord-aligned
 92   inline void write_ref_array(HeapWord* start, size_t count);
 93 
 94   CardTable* card_table() { return _card_table.load_relaxed(); }
 95   CardTable* card_table() const { return _card_table.load_relaxed(); }
 96 
 97   CardValue* card_table_base_const() const {
 98     assert(UseSerialGC || UseParallelGC, "Only these GCs have constant card table base");
 99     return card_table()->byte_map_base();
100   }
101 
102   virtual void on_slowpath_allocation_exit(JavaThread* thread, oop new_obj);
103 
104   virtual void print_on(outputStream* st) const;
105 





106   template <DecoratorSet decorators, typename BarrierSetT = CardTableBarrierSet>
107   class AccessBarrier: public BarrierSet::AccessBarrier<decorators, BarrierSetT> {
108     typedef BarrierSet::AccessBarrier<decorators, BarrierSetT> Raw;
109 
110   public:
111     template <typename T>
112     static void oop_store_in_heap(T* addr, oop value);
113     template <typename T>
114     static oop oop_atomic_cmpxchg_in_heap(T* addr, oop compare_value, oop new_value);
115     template <typename T>
116     static oop oop_atomic_xchg_in_heap(T* addr, oop new_value);
117 
118     template <typename T>
119     static OopCopyResult oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
120                                                arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
121                                                size_t length);
122 
123     static void clone_in_heap(oop src, oop dst, size_t size);
124 
125     static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value) {

 86   virtual void write_ref_array_pre(oop* dst, size_t length,
 87                                    bool dest_uninitialized) {}
 88   virtual void write_ref_array_pre(narrowOop* dst, size_t length,
 89                                    bool dest_uninitialized) {}
 90   // Below count is the # array elements being written, starting
 91   // at the address "start", which may not necessarily be HeapWord-aligned
 92   inline void write_ref_array(HeapWord* start, size_t count);
 93 
 94   CardTable* card_table() { return _card_table.load_relaxed(); }
 95   CardTable* card_table() const { return _card_table.load_relaxed(); }
 96 
 97   CardValue* card_table_base_const() const {
 98     assert(UseSerialGC || UseParallelGC, "Only these GCs have constant card table base");
 99     return card_table()->byte_map_base();
100   }
101 
102   virtual void on_slowpath_allocation_exit(JavaThread* thread, oop new_obj);
103 
104   virtual void print_on(outputStream* st) const;
105 
106   // The AOT code cache manager needs to know the current card shift
107   // and, for some barrier sets, the region grain size shift
108   uint card_shift() const { return card_table()->card_shift(); }
109   virtual uint grain_shift() { return 0; }
110 
111   template <DecoratorSet decorators, typename BarrierSetT = CardTableBarrierSet>
112   class AccessBarrier: public BarrierSet::AccessBarrier<decorators, BarrierSetT> {
113     typedef BarrierSet::AccessBarrier<decorators, BarrierSetT> Raw;
114 
115   public:
116     template <typename T>
117     static void oop_store_in_heap(T* addr, oop value);
118     template <typename T>
119     static oop oop_atomic_cmpxchg_in_heap(T* addr, oop compare_value, oop new_value);
120     template <typename T>
121     static oop oop_atomic_xchg_in_heap(T* addr, oop new_value);
122 
123     template <typename T>
124     static OopCopyResult oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw,
125                                                arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw,
126                                                size_t length);
127 
128     static void clone_in_heap(oop src, oop dst, size_t size);
129 
130     static void oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value) {
< prev index next >