| File: | jdk/src/hotspot/share/oops/methodCounters.cpp |
| Warning: | line 50, column 97 The result of the left shift is undefined because the left operand is negative |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
| 1 | /* | |||
| 2 | * Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved. | |||
| 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |||
| 4 | * | |||
| 5 | * This code is free software; you can redistribute it and/or modify it | |||
| 6 | * under the terms of the GNU General Public License version 2 only, as | |||
| 7 | * published by the Free Software Foundation. | |||
| 8 | * | |||
| 9 | * This code is distributed in the hope that it will be useful, but WITHOUT | |||
| 10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |||
| 11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |||
| 12 | * version 2 for more details (a copy is included in the LICENSE file that | |||
| 13 | * accompanied this code). | |||
| 14 | * | |||
| 15 | * You should have received a copy of the GNU General Public License version | |||
| 16 | * 2 along with this work; if not, write to the Free Software Foundation, | |||
| 17 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |||
| 18 | * | |||
| 19 | * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |||
| 20 | * or visit www.oracle.com if you need additional information or have any | |||
| 21 | * questions. | |||
| 22 | * | |||
| 23 | */ | |||
| 24 | #include "precompiled.hpp" | |||
| 25 | #include "compiler/compiler_globals.hpp" | |||
| 26 | #include "oops/method.hpp" | |||
| 27 | #include "oops/methodCounters.hpp" | |||
| 28 | #include "runtime/handles.inline.hpp" | |||
| 29 | ||||
| 30 | MethodCounters::MethodCounters(const methodHandle& mh) : | |||
| 31 | _prev_time(0), | |||
| 32 | _rate(0), | |||
| 33 | _nmethod_age(INT_MAX2147483647), | |||
| 34 | _highest_comp_level(0), | |||
| 35 | _highest_osr_comp_level(0) | |||
| 36 | { | |||
| 37 | set_interpreter_throwout_count(0); | |||
| 38 | JVMTI_ONLY(clear_number_of_breakpoints())clear_number_of_breakpoints(); | |||
| 39 | invocation_counter()->init(); | |||
| 40 | backedge_counter()->init(); | |||
| 41 | ||||
| 42 | if (StressCodeAging) { | |||
| 43 | set_nmethod_age(HotMethodDetectionLimit); | |||
| 44 | } | |||
| 45 | ||||
| 46 | // Set per-method thresholds. | |||
| 47 | double scale = 1.0; | |||
| 48 | CompilerOracle::has_option_value(mh, CompileCommand::CompileThresholdScaling, scale); | |||
| 49 | ||||
| 50 | _invoke_mask = right_n_bits(CompilerConfig::scaled_freq_log(Tier0InvokeNotifyFreqLog, scale))((((CompilerConfig::scaled_freq_log(Tier0InvokeNotifyFreqLog, scale)) >= BitsPerWord) ? 0 : (OneBit << (CompilerConfig ::scaled_freq_log(Tier0InvokeNotifyFreqLog, scale)))) - 1) << InvocationCounter::count_shift; | |||
| ||||
| 51 | _backedge_mask = right_n_bits(CompilerConfig::scaled_freq_log(Tier0BackedgeNotifyFreqLog, scale))((((CompilerConfig::scaled_freq_log(Tier0BackedgeNotifyFreqLog , scale)) >= BitsPerWord) ? 0 : (OneBit << (CompilerConfig ::scaled_freq_log(Tier0BackedgeNotifyFreqLog, scale)))) - 1) << InvocationCounter::count_shift; | |||
| 52 | } | |||
| 53 | ||||
| 54 | MethodCounters* MethodCounters::allocate_no_exception(const methodHandle& mh) { | |||
| 55 | ClassLoaderData* loader_data = mh->method_holder()->class_loader_data(); | |||
| 56 | return new(loader_data, method_counters_size(), MetaspaceObj::MethodCountersType) MethodCounters(mh); | |||
| 57 | } | |||
| 58 | ||||
| 59 | MethodCounters* MethodCounters::allocate_with_exception(const methodHandle& mh, TRAPSJavaThread* __the_thread__) { | |||
| 60 | ClassLoaderData* loader_data = mh->method_holder()->class_loader_data(); | |||
| 61 | return new(loader_data, method_counters_size(), MetaspaceObj::MethodCountersType, THREAD__the_thread__) MethodCounters(mh); | |||
| ||||
| 62 | } | |||
| 63 | ||||
| 64 | void MethodCounters::clear_counters() { | |||
| 65 | invocation_counter()->reset(); | |||
| 66 | backedge_counter()->reset(); | |||
| 67 | set_interpreter_throwout_count(0); | |||
| 68 | set_nmethod_age(INT_MAX2147483647); | |||
| 69 | set_prev_time(0); | |||
| 70 | set_prev_event_count(0); | |||
| 71 | set_rate(0); | |||
| 72 | set_highest_comp_level(0); | |||
| 73 | set_highest_osr_comp_level(0); | |||
| 74 | } | |||
| 75 | ||||
| 76 | void MethodCounters::print_value_on(outputStream* st) const { | |||
| 77 | assert(is_methodCounters(), "must be methodCounters")do { if (!(is_methodCounters())) { (*g_assert_poison) = 'X';; report_vm_error("/home/daniel/Projects/java/jdk/src/hotspot/share/oops/methodCounters.cpp" , 77, "assert(" "is_methodCounters()" ") failed", "must be methodCounters" ); ::breakpoint(); } } while (0); | |||
| 78 | st->print("method counters"); | |||
| 79 | print_address_on(st); | |||
| 80 | } | |||
| 81 | ||||
| 82 |