< prev index next >

src/share/vm/runtime/java.cpp

Print this page




  95   // %%% there can be 32-bit overflow here
  96   return ((*b)->invocation_count() + (*b)->compiled_invocation_count())
  97        - ((*a)->invocation_count() + (*a)->compiled_invocation_count());
  98 }
  99 
 100 void collect_profiled_methods(Method* m) {
 101   Thread* thread = Thread::current();
 102   methodHandle mh(thread, m);
 103   if ((m->method_data() != NULL) &&
 104       (PrintMethodData || CompilerOracle::should_print(mh))) {
 105     collected_profiled_methods->push(m);
 106   }
 107 }
 108 
 109 void print_method_profiling_data() {
 110   if (ProfileInterpreter COMPILER1_PRESENT(|| C1UpdateMethodData) &&
 111      (PrintMethodData || CompilerOracle::should_print_methods())) {
 112     ResourceMark rm;
 113     HandleMark hm;
 114     collected_profiled_methods = new GrowableArray<Method*>(1024);
 115     ClassLoaderDataGraph::methods_do(collect_profiled_methods);
 116     collected_profiled_methods->sort(&compare_methods);
 117 
 118     int count = collected_profiled_methods->length();
 119     int total_size = 0;
 120     if (count > 0) {
 121       for (int index = 0; index < count; index++) {
 122         Method* m = collected_profiled_methods->at(index);
 123         ttyLocker ttyl;
 124         tty->print_cr("------------------------------------------------------------------------");
 125         m->print_invocation_count();
 126         tty->print_cr("  mdo size: %d bytes", m->method_data()->size_in_bytes());
 127         tty->cr();
 128         // Dump data on parameters if any
 129         if (m->method_data() != NULL && m->method_data()->parameters_type_data() != NULL) {
 130           tty->fill_to(2);
 131           m->method_data()->parameters_type_data()->print_data_on(tty);
 132         }
 133         m->print_codes();
 134         total_size += m->method_data()->size_in_bytes();
 135       }


 146 
 147 GrowableArray<Method*>* collected_invoked_methods;
 148 
 149 void collect_invoked_methods(Method* m) {
 150   if (m->invocation_count() + m->compiled_invocation_count() >= 1 ) {
 151     collected_invoked_methods->push(m);
 152   }
 153 }
 154 
 155 
 156 
 157 
 158 void print_method_invocation_histogram() {
 159   ResourceMark rm;
 160   HandleMark hm;
 161   collected_invoked_methods = new GrowableArray<Method*>(1024);
 162   SystemDictionary::methods_do(collect_invoked_methods);
 163   collected_invoked_methods->sort(&compare_methods);
 164   //
 165   tty->cr();
 166   tty->print_cr("Histogram Over MethodOop Invocation Counters (cutoff = " INTX_FORMAT "):", MethodHistogramCutoff);
 167   tty->cr();
 168   tty->print_cr("____Count_(I+C)____Method________________________Module_________________");
 169   unsigned total = 0, int_total = 0, comp_total = 0, static_total = 0, final_total = 0,
 170       synch_total = 0, nativ_total = 0, acces_total = 0;
 171   for (int index = 0; index < collected_invoked_methods->length(); index++) {
 172     Method* m = collected_invoked_methods->at(index);
 173     int c = m->invocation_count() + m->compiled_invocation_count();
 174     if (c >= MethodHistogramCutoff) m->print_invocation_count();
 175     int_total  += m->invocation_count();
 176     comp_total += m->compiled_invocation_count();
 177     if (m->is_final())        final_total  += c;
 178     if (m->is_static())       static_total += c;
 179     if (m->is_synchronized()) synch_total  += c;
 180     if (m->is_native())       nativ_total  += c;
 181     if (m->is_accessor())     acces_total  += c;
 182   }
 183   tty->cr();
 184   total = int_total + comp_total;
 185   tty->print_cr("Invocations summary:");
 186   tty->print_cr("\t%9d (%4.1f%%) interpreted",  int_total,    100.0 * int_total    / total);




  95   // %%% there can be 32-bit overflow here
  96   return ((*b)->invocation_count() + (*b)->compiled_invocation_count())
  97        - ((*a)->invocation_count() + (*a)->compiled_invocation_count());
  98 }
  99 
 100 void collect_profiled_methods(Method* m) {
 101   Thread* thread = Thread::current();
 102   methodHandle mh(thread, m);
 103   if ((m->method_data() != NULL) &&
 104       (PrintMethodData || CompilerOracle::should_print(mh))) {
 105     collected_profiled_methods->push(m);
 106   }
 107 }
 108 
 109 void print_method_profiling_data() {
 110   if (ProfileInterpreter COMPILER1_PRESENT(|| C1UpdateMethodData) &&
 111      (PrintMethodData || CompilerOracle::should_print_methods())) {
 112     ResourceMark rm;
 113     HandleMark hm;
 114     collected_profiled_methods = new GrowableArray<Method*>(1024);
 115     SystemDictionary::methods_do(collect_profiled_methods);
 116     collected_profiled_methods->sort(&compare_methods);
 117 
 118     int count = collected_profiled_methods->length();
 119     int total_size = 0;
 120     if (count > 0) {
 121       for (int index = 0; index < count; index++) {
 122         Method* m = collected_profiled_methods->at(index);
 123         ttyLocker ttyl;
 124         tty->print_cr("------------------------------------------------------------------------");
 125         m->print_invocation_count();
 126         tty->print_cr("  mdo size: %d bytes", m->method_data()->size_in_bytes());
 127         tty->cr();
 128         // Dump data on parameters if any
 129         if (m->method_data() != NULL && m->method_data()->parameters_type_data() != NULL) {
 130           tty->fill_to(2);
 131           m->method_data()->parameters_type_data()->print_data_on(tty);
 132         }
 133         m->print_codes();
 134         total_size += m->method_data()->size_in_bytes();
 135       }


 146 
 147 GrowableArray<Method*>* collected_invoked_methods;
 148 
 149 void collect_invoked_methods(Method* m) {
 150   if (m->invocation_count() + m->compiled_invocation_count() >= 1 ) {
 151     collected_invoked_methods->push(m);
 152   }
 153 }
 154 
 155 
 156 
 157 
 158 void print_method_invocation_histogram() {
 159   ResourceMark rm;
 160   HandleMark hm;
 161   collected_invoked_methods = new GrowableArray<Method*>(1024);
 162   SystemDictionary::methods_do(collect_invoked_methods);
 163   collected_invoked_methods->sort(&compare_methods);
 164   //
 165   tty->cr();
 166   tty->print_cr("Histogram Over Method Invocation Counters (cutoff = " INTX_FORMAT "):", MethodHistogramCutoff);
 167   tty->cr();
 168   tty->print_cr("____Count_(I+C)____Method________________________Module_________________");
 169   unsigned total = 0, int_total = 0, comp_total = 0, static_total = 0, final_total = 0,
 170       synch_total = 0, nativ_total = 0, acces_total = 0;
 171   for (int index = 0; index < collected_invoked_methods->length(); index++) {
 172     Method* m = collected_invoked_methods->at(index);
 173     int c = m->invocation_count() + m->compiled_invocation_count();
 174     if (c >= MethodHistogramCutoff) m->print_invocation_count();
 175     int_total  += m->invocation_count();
 176     comp_total += m->compiled_invocation_count();
 177     if (m->is_final())        final_total  += c;
 178     if (m->is_static())       static_total += c;
 179     if (m->is_synchronized()) synch_total  += c;
 180     if (m->is_native())       nativ_total  += c;
 181     if (m->is_accessor())     acces_total  += c;
 182   }
 183   tty->cr();
 184   total = int_total + comp_total;
 185   tty->print_cr("Invocations summary:");
 186   tty->print_cr("\t%9d (%4.1f%%) interpreted",  int_total,    100.0 * int_total    / total);


< prev index next >