< prev index next >

src/hotspot/share/oops/methodCounters.cpp

Print this page

 23  */
 24 
 25 #include "cds/cdsConfig.hpp"
 26 #include "compiler/compiler_globals.hpp"
 27 #include "compiler/compilerOracle.hpp"
 28 #include "memory/metaspaceClosure.hpp"
 29 #include "memory/resourceArea.hpp"
 30 #include "oops/method.hpp"
 31 #include "oops/methodCounters.hpp"
 32 #include "oops/trainingData.hpp"
 33 #include "runtime/handles.inline.hpp"
 34 
 35 MethodCounters::MethodCounters(const methodHandle& mh) :
 36   _method(mh()),
 37   _method_training_data(method_training_data_sentinel()),
 38   _prev_time(0),
 39   _rate(0),
 40   _highest_comp_level(0),
 41   _highest_osr_comp_level(0)
 42 {



 43   set_interpreter_throwout_count(0);
 44   JVMTI_ONLY(clear_number_of_breakpoints());
 45   invocation_counter()->init();
 46   backedge_counter()->init();
 47 
 48   // Set per-method thresholds.
 49   double scale = 1.0;
 50   CompilerOracle::has_option_value(mh, CompileCommandEnum::CompileThresholdScaling, scale);
 51 
 52   _invoke_mask = right_n_bits(CompilerConfig::scaled_freq_log(Tier0InvokeNotifyFreqLog, scale)) << InvocationCounter::count_shift;
 53   _backedge_mask = right_n_bits(CompilerConfig::scaled_freq_log(Tier0BackedgeNotifyFreqLog, scale)) << InvocationCounter::count_shift;
 54 }
 55 
 56 #if INCLUDE_CDS
 57 MethodCounters::MethodCounters() {
 58   // Used by cppVtables.cpp only
 59   assert(CDSConfig::is_dumping_static_archive() || UseSharedSpaces, "only for CDS");
 60 }
 61 #endif
 62 
 63 MethodCounters* MethodCounters::allocate_no_exception(const methodHandle& mh) {
 64   ClassLoaderData* loader_data = mh->method_holder()->class_loader_data();
 65   return new(loader_data, method_counters_size(), MetaspaceObj::MethodCountersType) MethodCounters(mh);
 66 }
 67 
 68 MethodCounters* MethodCounters::allocate_with_exception(const methodHandle& mh, TRAPS) {
 69   ClassLoaderData* loader_data = mh->method_holder()->class_loader_data();
 70   return new(loader_data, method_counters_size(), MetaspaceObj::MethodCountersType, THREAD) MethodCounters(mh);
 71 }
 72 
 73 void MethodCounters::clear_counters() {
 74   invocation_counter()->reset();
 75   backedge_counter()->reset();



 76   set_interpreter_throwout_count(0);
 77   set_prev_time(0);
 78   set_prev_event_count(0);
 79   set_rate(0);
 80   set_highest_comp_level(0);
 81   set_highest_osr_comp_level(0);
 82 }
 83 
 84 void MethodCounters::metaspace_pointers_do(MetaspaceClosure* it) {
 85   log_trace(aot, training)("Iter(MethodCounters): %p", this);
 86   it->push(&_method);
 87   it->push(&_method_training_data);
 88 }
 89 
 90 #if INCLUDE_CDS
 91 void MethodCounters::remove_unshareable_info() {
 92 }
 93 void MethodCounters::restore_unshareable_info(TRAPS) {
 94   _method_training_data = method_training_data_sentinel();
 95 }

 23  */
 24 
 25 #include "cds/cdsConfig.hpp"
 26 #include "compiler/compiler_globals.hpp"
 27 #include "compiler/compilerOracle.hpp"
 28 #include "memory/metaspaceClosure.hpp"
 29 #include "memory/resourceArea.hpp"
 30 #include "oops/method.hpp"
 31 #include "oops/methodCounters.hpp"
 32 #include "oops/trainingData.hpp"
 33 #include "runtime/handles.inline.hpp"
 34 
 35 MethodCounters::MethodCounters(const methodHandle& mh) :
 36   _method(mh()),
 37   _method_training_data(method_training_data_sentinel()),
 38   _prev_time(0),
 39   _rate(0),
 40   _highest_comp_level(0),
 41   _highest_osr_comp_level(0)
 42 {
 43   _jit_code_invocation_count = 0;
 44   _aot_code_invocation_count = 0;
 45   _aot_code_recompile_requested = 0;
 46   set_interpreter_throwout_count(0);
 47   JVMTI_ONLY(clear_number_of_breakpoints());
 48   invocation_counter()->init();
 49   backedge_counter()->init();
 50 
 51   // Set per-method thresholds.
 52   double scale = 1.0;
 53   CompilerOracle::has_option_value(mh, CompileCommandEnum::CompileThresholdScaling, scale);
 54 
 55   _invoke_mask = right_n_bits(CompilerConfig::scaled_freq_log(Tier0InvokeNotifyFreqLog, scale)) << InvocationCounter::count_shift;
 56   _backedge_mask = right_n_bits(CompilerConfig::scaled_freq_log(Tier0BackedgeNotifyFreqLog, scale)) << InvocationCounter::count_shift;
 57 }
 58 
 59 #if INCLUDE_CDS
 60 MethodCounters::MethodCounters() {
 61   // Used by cppVtables.cpp only
 62   assert(CDSConfig::is_dumping_static_archive() || UseSharedSpaces, "only for CDS");
 63 }
 64 #endif
 65 
 66 MethodCounters* MethodCounters::allocate_no_exception(const methodHandle& mh) {
 67   ClassLoaderData* loader_data = mh->method_holder()->class_loader_data();
 68   return new(loader_data, method_counters_size(), MetaspaceObj::MethodCountersType) MethodCounters(mh);
 69 }
 70 
 71 MethodCounters* MethodCounters::allocate_with_exception(const methodHandle& mh, TRAPS) {
 72   ClassLoaderData* loader_data = mh->method_holder()->class_loader_data();
 73   return new(loader_data, method_counters_size(), MetaspaceObj::MethodCountersType, THREAD) MethodCounters(mh);
 74 }
 75 
 76 void MethodCounters::clear_counters() {
 77   invocation_counter()->reset();
 78   backedge_counter()->reset();
 79   _jit_code_invocation_count = 0;
 80   _aot_code_invocation_count = 0;
 81   _aot_code_recompile_requested = 0;
 82   set_interpreter_throwout_count(0);
 83   set_prev_time(0);
 84   set_prev_event_count(0);
 85   set_rate(0);
 86   set_highest_comp_level(0);
 87   set_highest_osr_comp_level(0);
 88 }
 89 
 90 void MethodCounters::metaspace_pointers_do(MetaspaceClosure* it) {
 91   log_trace(aot, training)("Iter(MethodCounters): %p", this);
 92   it->push(&_method);
 93   it->push(&_method_training_data);
 94 }
 95 
 96 #if INCLUDE_CDS
 97 void MethodCounters::remove_unshareable_info() {
 98 }
 99 void MethodCounters::restore_unshareable_info(TRAPS) {
100   _method_training_data = method_training_data_sentinel();
101 }
< prev index next >