equal
deleted
inserted
replaced
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) { |