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