Mercurial > hg > graal-compiler
comparison src/share/vm/runtime/os.cpp @ 17935:7384f6a12fc1
8038212: Method::is_valid_method() check has performance regression impact for stackwalking
Summary: Only prune metaspace virtual spaces at safepoint so walking them is safe outside a safepoint.
Reviewed-by: mgerdin, mgronlun, hseigel, stefank
author | coleenp |
---|---|
date | Thu, 15 May 2014 18:23:26 -0400 |
parents | 5cf196cc5405 |
children | 78bbf4d43a14 |
comparison
equal
deleted
inserted
replaced
17934:366c198c896d | 17935:7384f6a12fc1 |
---|---|
1093 return; | 1093 return; |
1094 } | 1094 } |
1095 | 1095 |
1096 } | 1096 } |
1097 | 1097 |
1098 // Check if in metaspace. | 1098 // Check if in metaspace and print types that have vptrs (only method now) |
1099 if (ClassLoaderDataGraph::contains((address)addr)) { | 1099 if (Metaspace::contains(addr)) { |
1100 // Use addr->print() from the debugger instead (not here) | 1100 if (Method::has_method_vptr((const void*)addr)) { |
1101 st->print_cr(INTPTR_FORMAT | 1101 ((Method*)addr)->print_value_on(st); |
1102 " is pointing into metadata", addr); | 1102 st->cr(); |
1103 } else { | |
1104 // Use addr->print() from the debugger instead (not here) | |
1105 st->print_cr(INTPTR_FORMAT " is pointing into metadata", addr); | |
1106 } | |
1103 return; | 1107 return; |
1104 } | 1108 } |
1105 | 1109 |
1106 // Try an OS specific find | 1110 // Try an OS specific find |
1107 if (os::find(addr, st)) { | 1111 if (os::find(addr, st)) { |