2189 bool was_live = false; 2190 if (_sp->block_is_obj(addr)) { 2191 was_obj = true; 2192 oop p = oop(addr); 2193 guarantee(p->is_oop(), "Should be an oop"); 2194 res = _sp->adjustObjectSize(p->size()); 2195 if (_sp->obj_is_alive(addr)) { 2196 was_live = true; 2197 p->verify(); 2198 } 2199 } else { 2200 FreeChunk* fc = (FreeChunk*)addr; 2201 res = fc->size(); 2202 if (FLSVerifyLists && !fc->cantCoalesce()) { 2203 guarantee(_sp->verify_chunk_in_free_list(fc), 2204 "Chunk should be on a free list"); 2205 } 2206 } 2207 if (res == 0) { 2208 LogHandle(gc, verify) log; 2209 log.info("Livelock: no rank reduction!"); 2210 log.info(" Current: addr = " PTR_FORMAT ", size = " SIZE_FORMAT ", obj = %s, live = %s \n" 2211 " Previous: addr = " PTR_FORMAT ", size = " SIZE_FORMAT ", obj = %s, live = %s \n", 2212 p2i(addr), res, was_obj ?"true":"false", was_live ?"true":"false", 2213 p2i(_last_addr), _last_size, _last_was_obj?"true":"false", _last_was_live?"true":"false"); 2214 ResourceMark rm; 2215 _sp->print_on(log.info_stream()); 2216 guarantee(false, "Verification failed."); 2217 } 2218 _last_addr = addr; 2219 _last_size = res; 2220 _last_was_obj = was_obj; 2221 _last_was_live = was_live; 2222 return res; 2223 } 2224 }; 2225 2226 class VerifyAllOopsClosure: public OopClosure { 2227 private: 2228 const CMSCollector* _collector; 2229 const CompactibleFreeListSpace* _sp; 2230 const MemRegion _span; 2231 const bool _past_remark; 2232 const CMSBitMap* _bit_map; 2233 2234 protected: 2235 void do_oop(void* p, oop obj) { | 2189 bool was_live = false; 2190 if (_sp->block_is_obj(addr)) { 2191 was_obj = true; 2192 oop p = oop(addr); 2193 guarantee(p->is_oop(), "Should be an oop"); 2194 res = _sp->adjustObjectSize(p->size()); 2195 if (_sp->obj_is_alive(addr)) { 2196 was_live = true; 2197 p->verify(); 2198 } 2199 } else { 2200 FreeChunk* fc = (FreeChunk*)addr; 2201 res = fc->size(); 2202 if (FLSVerifyLists && !fc->cantCoalesce()) { 2203 guarantee(_sp->verify_chunk_in_free_list(fc), 2204 "Chunk should be on a free list"); 2205 } 2206 } 2207 if (res == 0) { 2208 LogHandle(gc, verify) log; 2209 log.error("Livelock: no rank reduction!"); 2210 log.error(" Current: addr = " PTR_FORMAT ", size = " SIZE_FORMAT ", obj = %s, live = %s \n" 2211 " Previous: addr = " PTR_FORMAT ", size = " SIZE_FORMAT ", obj = %s, live = %s \n", 2212 p2i(addr), res, was_obj ?"true":"false", was_live ?"true":"false", 2213 p2i(_last_addr), _last_size, _last_was_obj?"true":"false", _last_was_live?"true":"false"); 2214 ResourceMark rm; 2215 _sp->print_on(log.error_stream()); 2216 guarantee(false, "Verification failed."); 2217 } 2218 _last_addr = addr; 2219 _last_size = res; 2220 _last_was_obj = was_obj; 2221 _last_was_live = was_live; 2222 return res; 2223 } 2224 }; 2225 2226 class VerifyAllOopsClosure: public OopClosure { 2227 private: 2228 const CMSCollector* _collector; 2229 const CompactibleFreeListSpace* _sp; 2230 const MemRegion _span; 2231 const bool _past_remark; 2232 const CMSBitMap* _bit_map; 2233 2234 protected: 2235 void do_oop(void* p, oop obj) { |