< prev index next >

src/share/vm/gc/cms/compactibleFreeListSpace.cpp

Print this page




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) {


< prev index next >