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