< prev index next >

src/hotspot/share/gc/z/zPage.inline.hpp

Print this page

190 inline bool ZPage::is_object_strongly_marked(uintptr_t addr) const {
191   const size_t index = ((ZAddress::offset(addr) - start()) >> object_alignment_shift()) * 2;
192   return _livemap.get(index + 1);
193 }
194 
195 inline bool ZPage::is_object_live(uintptr_t addr) const {
196   return is_allocating() || is_object_marked(addr);
197 }
198 
199 inline bool ZPage::is_object_strongly_live(uintptr_t addr) const {
200   return is_allocating() || is_object_strongly_marked(addr);
201 }
202 
203 inline bool ZPage::mark_object(uintptr_t addr, bool finalizable, bool& inc_live) {
204   assert(ZAddress::is_marked(addr), "Invalid address");
205   assert(is_relocatable(), "Invalid page state");
206   assert(is_in(addr), "Invalid address");
207 
208   // Set mark bit
209   const size_t index = ((ZAddress::offset(addr) - start()) >> object_alignment_shift()) * 2;
210   return _livemap.set_atomic(index, finalizable, inc_live);
211 }
212 
213 inline void ZPage::inc_live_atomic(uint32_t objects, size_t bytes) {
214   _livemap.inc_live_atomic(objects, bytes);
215 }
216 
217 inline uint32_t ZPage::live_objects() const {
218   assert(is_marked(), "Should be marked");
219   return _livemap.live_objects();
220 }
221 
222 inline size_t ZPage::live_bytes() const {
223   assert(is_marked(), "Should be marked");
224   return _livemap.live_bytes();
225 }
226 
227 inline void ZPage::object_iterate(ObjectClosure* cl) {
228   _livemap.iterate(cl, ZAddress::good(start()), object_alignment_shift());
229 }
230 
231 inline uintptr_t ZPage::alloc_object(size_t size) {
232   assert(is_allocating(), "Invalid state");
233 
234   const size_t aligned_size = align_up(size, object_alignment());

190 inline bool ZPage::is_object_strongly_marked(uintptr_t addr) const {
191   const size_t index = ((ZAddress::offset(addr) - start()) >> object_alignment_shift()) * 2;
192   return _livemap.get(index + 1);
193 }
194 
195 inline bool ZPage::is_object_live(uintptr_t addr) const {
196   return is_allocating() || is_object_marked(addr);
197 }
198 
199 inline bool ZPage::is_object_strongly_live(uintptr_t addr) const {
200   return is_allocating() || is_object_strongly_marked(addr);
201 }
202 
203 inline bool ZPage::mark_object(uintptr_t addr, bool finalizable, bool& inc_live) {
204   assert(ZAddress::is_marked(addr), "Invalid address");
205   assert(is_relocatable(), "Invalid page state");
206   assert(is_in(addr), "Invalid address");
207 
208   // Set mark bit
209   const size_t index = ((ZAddress::offset(addr) - start()) >> object_alignment_shift()) * 2;
210   return _livemap.set(index, finalizable, inc_live);
211 }
212 
213 inline void ZPage::inc_live(uint32_t objects, size_t bytes) {
214   _livemap.inc_live(objects, bytes);
215 }
216 
217 inline uint32_t ZPage::live_objects() const {
218   assert(is_marked(), "Should be marked");
219   return _livemap.live_objects();
220 }
221 
222 inline size_t ZPage::live_bytes() const {
223   assert(is_marked(), "Should be marked");
224   return _livemap.live_bytes();
225 }
226 
227 inline void ZPage::object_iterate(ObjectClosure* cl) {
228   _livemap.iterate(cl, ZAddress::good(start()), object_alignment_shift());
229 }
230 
231 inline uintptr_t ZPage::alloc_object(size_t size) {
232   assert(is_allocating(), "Invalid state");
233 
234   const size_t aligned_size = align_up(size, object_alignment());
< prev index next >