143 // Below count is the # array elements being written, starting
144 // at the address "start", which may not necessarily be HeapWord-aligned
145 inline void write_ref_array(HeapWord* start, size_t count);
146
147 // Static versions, suitable for calling from generated code;
148 // count is # array elements being written, starting with "start",
149 // which may not necessarily be HeapWord-aligned.
150 static void static_write_ref_array_pre(HeapWord* start, size_t count);
151 static void static_write_ref_array_post(HeapWord* start, size_t count);
152
153 protected:
154 virtual void write_ref_array_work(MemRegion mr) = 0;
155 public:
156 virtual void write_prim_array(MemRegion mr) = 0;
157
158 virtual void read_region(MemRegion mr) = 0;
159
160 // (For efficiency reasons, this operation is specialized for certain
161 // barrier types. Semantically, it should be thought of as a call to the
162 // virtual "_work" function below, which must implement the barrier.)
163 inline void write_region(MemRegion mr);
164 protected:
165 virtual void write_region_work(MemRegion mr) = 0;
166 public:
167 // Inform the BarrierSet that the the covered heap region that starts
168 // with "base" has been changed to have the given size (possibly from 0,
169 // for initialization.)
170 virtual void resize_covered_region(MemRegion new_region) = 0;
171
172 // If the barrier set imposes any alignment restrictions on boundaries
173 // within the heap, this function tells whether they are met.
174 virtual bool is_aligned(HeapWord* addr) = 0;
175
176 // Print a description of the memory for the barrier set
177 virtual void print_on(outputStream* st) const = 0;
178 };
179
180 #endif // SHARE_VM_MEMORY_BARRIERSET_HPP
|
143 // Below count is the # array elements being written, starting
144 // at the address "start", which may not necessarily be HeapWord-aligned
145 inline void write_ref_array(HeapWord* start, size_t count);
146
147 // Static versions, suitable for calling from generated code;
148 // count is # array elements being written, starting with "start",
149 // which may not necessarily be HeapWord-aligned.
150 static void static_write_ref_array_pre(HeapWord* start, size_t count);
151 static void static_write_ref_array_post(HeapWord* start, size_t count);
152
153 protected:
154 virtual void write_ref_array_work(MemRegion mr) = 0;
155 public:
156 virtual void write_prim_array(MemRegion mr) = 0;
157
158 virtual void read_region(MemRegion mr) = 0;
159
160 // (For efficiency reasons, this operation is specialized for certain
161 // barrier types. Semantically, it should be thought of as a call to the
162 // virtual "_work" function below, which must implement the barrier.)
163 void write_region(MemRegion mr);
164 protected:
165 virtual void write_region_work(MemRegion mr) = 0;
166 public:
167 // Inform the BarrierSet that the the covered heap region that starts
168 // with "base" has been changed to have the given size (possibly from 0,
169 // for initialization.)
170 virtual void resize_covered_region(MemRegion new_region) = 0;
171
172 // If the barrier set imposes any alignment restrictions on boundaries
173 // within the heap, this function tells whether they are met.
174 virtual bool is_aligned(HeapWord* addr) = 0;
175
176 // Print a description of the memory for the barrier set
177 virtual void print_on(outputStream* st) const = 0;
178 };
179
180 #endif // SHARE_VM_MEMORY_BARRIERSET_HPP
|