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 |