< prev index next >
src/hotspot/share/runtime/sharedRuntime.cpp
Print this page
*** 2153,2164 ****
static int _size_histogram[MAX_ARITY]; // histogram of arg size in words
static int _max_arity; // max. arity seen
static int _max_size; // max. arg size seen
static void add_method_to_histogram(nmethod* nm) {
! if (CompiledMethod::nmethod_access_is_safe(nm)) {
! Method* method = nm->method();
ArgumentCount args(method->signature());
int arity = args.size() + (method->is_static() ? 0 : 1);
int argsize = method->size_of_parameters();
arity = MIN2(arity, MAX_ARITY-1);
argsize = MIN2(argsize, MAX_ARITY-1);
--- 2153,2164 ----
static int _size_histogram[MAX_ARITY]; // histogram of arg size in words
static int _max_arity; // max. arity seen
static int _max_size; // max. arg size seen
static void add_method_to_histogram(nmethod* nm) {
! Method* method = (nm == NULL) ? NULL : nm->method();
! if ((method != NULL) && nm->is_alive()) {
ArgumentCount args(method->signature());
int arity = args.size() + (method->is_static() ? 0 : 1);
int argsize = method->size_of_parameters();
arity = MIN2(arity, MAX_ARITY-1);
argsize = MIN2(argsize, MAX_ARITY-1);
*** 2195,2205 ****
tty->cr();
}
public:
MethodArityHistogram() {
! MutexLockerEx mu(CodeCache_lock, Mutex::_no_safepoint_check_flag);
_max_arity = _max_size = 0;
for (int i = 0; i < MAX_ARITY; i++) _arity_histogram[i] = _size_histogram[i] = 0;
CodeCache::nmethods_do(add_method_to_histogram);
print_histogram();
}
--- 2195,2208 ----
tty->cr();
}
public:
MethodArityHistogram() {
! // Take the Compile_lock to protect against changes in the CodeBlob structures
! MutexLockerEx mu1(Compile_lock, Mutex::_no_safepoint_check_flag);
! // Take the CodeCache_lock to protect against changes in the CodeHeap structure
! MutexLockerEx mu2(CodeCache_lock, Mutex::_no_safepoint_check_flag);
_max_arity = _max_size = 0;
for (int i = 0; i < MAX_ARITY; i++) _arity_histogram[i] = _size_histogram[i] = 0;
CodeCache::nmethods_do(add_method_to_histogram);
print_histogram();
}
< prev index next >