hotspot/src/share/vm/code/nmethod.cpp
changeset 4894 8a76fd3d098d
parent 4891 7c8755dd5bb2
child 5334 b2d040a8d375
equal deleted inserted replaced
4893:fedc27b54caa 4894:8a76fd3d098d
   986 
   986 
   987 ScopeDesc* nmethod::scope_desc_at(address pc) {
   987 ScopeDesc* nmethod::scope_desc_at(address pc) {
   988   PcDesc* pd = pc_desc_at(pc);
   988   PcDesc* pd = pc_desc_at(pc);
   989   guarantee(pd != NULL, "scope must be present");
   989   guarantee(pd != NULL, "scope must be present");
   990   return new ScopeDesc(this, pd->scope_decode_offset(),
   990   return new ScopeDesc(this, pd->scope_decode_offset(),
   991                        pd->obj_decode_offset(), pd->should_reexecute());
   991                        pd->obj_decode_offset(), pd->should_reexecute(),
       
   992                        pd->return_oop());
   992 }
   993 }
   993 
   994 
   994 
   995 
   995 void nmethod::clear_inline_caches() {
   996 void nmethod::clear_inline_caches() {
   996   assert(SafepointSynchronize::is_at_safepoint(), "cleaning of IC's only allowed at safepoint");
   997   assert(SafepointSynchronize::is_at_safepoint(), "cleaning of IC's only allowed at safepoint");
  2157     ic = CompiledIC_at(call_site);
  2158     ic = CompiledIC_at(call_site);
  2158   }
  2159   }
  2159   PcDesc* pd = pc_desc_at(ic->end_of_call());
  2160   PcDesc* pd = pc_desc_at(ic->end_of_call());
  2160   assert(pd != NULL, "PcDesc must exist");
  2161   assert(pd != NULL, "PcDesc must exist");
  2161   for (ScopeDesc* sd = new ScopeDesc(this, pd->scope_decode_offset(),
  2162   for (ScopeDesc* sd = new ScopeDesc(this, pd->scope_decode_offset(),
  2162                                      pd->obj_decode_offset(), pd->should_reexecute());
  2163                                      pd->obj_decode_offset(), pd->should_reexecute(),
       
  2164                                      pd->return_oop());
  2163        !sd->is_top(); sd = sd->sender()) {
  2165        !sd->is_top(); sd = sd->sender()) {
  2164     sd->verify();
  2166     sd->verify();
  2165   }
  2167   }
  2166 }
  2168 }
  2167 
  2169 
  2422 // Return a the last scope in (begin..end]
  2424 // Return a the last scope in (begin..end]
  2423 ScopeDesc* nmethod::scope_desc_in(address begin, address end) {
  2425 ScopeDesc* nmethod::scope_desc_in(address begin, address end) {
  2424   PcDesc* p = pc_desc_near(begin+1);
  2426   PcDesc* p = pc_desc_near(begin+1);
  2425   if (p != NULL && p->real_pc(this) <= end) {
  2427   if (p != NULL && p->real_pc(this) <= end) {
  2426     return new ScopeDesc(this, p->scope_decode_offset(),
  2428     return new ScopeDesc(this, p->scope_decode_offset(),
  2427                          p->obj_decode_offset(), p->should_reexecute());
  2429                          p->obj_decode_offset(), p->should_reexecute(),
       
  2430                          p->return_oop());
  2428   }
  2431   }
  2429   return NULL;
  2432   return NULL;
  2430 }
  2433 }
  2431 
  2434 
  2432 void nmethod::print_nmethod_labels(outputStream* stream, address block_begin) {
  2435 void nmethod::print_nmethod_labels(outputStream* stream, address block_begin) {