hotspot/src/share/vm/compiler/compileBroker.cpp
changeset 17133 ef4dd2f8fcb1
parent 17132 dffd513b2a8c
child 17383 3665c0901a0d
equal deleted inserted replaced
17132:dffd513b2a8c 17133:ef4dd2f8fcb1
    63 HS_DTRACE_PROBE_DECL8(hotspot, method__compile__begin,
    63 HS_DTRACE_PROBE_DECL8(hotspot, method__compile__begin,
    64   char*, intptr_t, char*, intptr_t, char*, intptr_t, char*, intptr_t);
    64   char*, intptr_t, char*, intptr_t, char*, intptr_t, char*, intptr_t);
    65 HS_DTRACE_PROBE_DECL9(hotspot, method__compile__end,
    65 HS_DTRACE_PROBE_DECL9(hotspot, method__compile__end,
    66   char*, intptr_t, char*, intptr_t, char*, intptr_t, char*, intptr_t, bool);
    66   char*, intptr_t, char*, intptr_t, char*, intptr_t, char*, intptr_t, bool);
    67 
    67 
    68 #define DTRACE_METHOD_COMPILE_BEGIN_PROBE(compiler, method, comp_name)   \
    68 #define DTRACE_METHOD_COMPILE_BEGIN_PROBE(method, comp_name)             \
    69   {                                                                      \
    69   {                                                                      \
    70     Symbol* klass_name = (method)->klass_name();                         \
    70     Symbol* klass_name = (method)->klass_name();                         \
    71     Symbol* name = (method)->name();                                     \
    71     Symbol* name = (method)->name();                                     \
    72     Symbol* signature = (method)->signature();                           \
    72     Symbol* signature = (method)->signature();                           \
    73     HS_DTRACE_PROBE8(hotspot, method__compile__begin,                    \
    73     HS_DTRACE_PROBE8(hotspot, method__compile__begin,                    \
    75       klass_name->bytes(), klass_name->utf8_length(),                    \
    75       klass_name->bytes(), klass_name->utf8_length(),                    \
    76       name->bytes(), name->utf8_length(),                                \
    76       name->bytes(), name->utf8_length(),                                \
    77       signature->bytes(), signature->utf8_length());                     \
    77       signature->bytes(), signature->utf8_length());                     \
    78   }
    78   }
    79 
    79 
    80 #define DTRACE_METHOD_COMPILE_END_PROBE(compiler, method,                \
    80 #define DTRACE_METHOD_COMPILE_END_PROBE(method, comp_name, success)      \
    81                                         comp_name, success)              \
       
    82   {                                                                      \
    81   {                                                                      \
    83     Symbol* klass_name = (method)->klass_name();                         \
    82     Symbol* klass_name = (method)->klass_name();                         \
    84     Symbol* name = (method)->name();                                     \
    83     Symbol* name = (method)->name();                                     \
    85     Symbol* signature = (method)->signature();                           \
    84     Symbol* signature = (method)->signature();                           \
    86     HS_DTRACE_PROBE9(hotspot, method__compile__end,                      \
    85     HS_DTRACE_PROBE9(hotspot, method__compile__end,                      \
    90       signature->bytes(), signature->utf8_length(), (success));          \
    89       signature->bytes(), signature->utf8_length(), (success));          \
    91   }
    90   }
    92 
    91 
    93 #else /* USDT2 */
    92 #else /* USDT2 */
    94 
    93 
    95 #define DTRACE_METHOD_COMPILE_BEGIN_PROBE(compiler, method, comp_name)   \
    94 #define DTRACE_METHOD_COMPILE_BEGIN_PROBE(method, comp_name)             \
    96   {                                                                      \
    95   {                                                                      \
    97     Symbol* klass_name = (method)->klass_name();                         \
    96     Symbol* klass_name = (method)->klass_name();                         \
    98     Symbol* name = (method)->name();                                     \
    97     Symbol* name = (method)->name();                                     \
    99     Symbol* signature = (method)->signature();                           \
    98     Symbol* signature = (method)->signature();                           \
   100     HOTSPOT_METHOD_COMPILE_BEGIN(                                        \
    99     HOTSPOT_METHOD_COMPILE_BEGIN(                                        \
   102       (char *) klass_name->bytes(), klass_name->utf8_length(),           \
   101       (char *) klass_name->bytes(), klass_name->utf8_length(),           \
   103       (char *) name->bytes(), name->utf8_length(),                       \
   102       (char *) name->bytes(), name->utf8_length(),                       \
   104       (char *) signature->bytes(), signature->utf8_length());            \
   103       (char *) signature->bytes(), signature->utf8_length());            \
   105   }
   104   }
   106 
   105 
   107 #define DTRACE_METHOD_COMPILE_END_PROBE(compiler, method,                \
   106 #define DTRACE_METHOD_COMPILE_END_PROBE(method, comp_name, success)      \
   108                                         comp_name, success)              \
       
   109   {                                                                      \
   107   {                                                                      \
   110     Symbol* klass_name = (method)->klass_name();                         \
   108     Symbol* klass_name = (method)->klass_name();                         \
   111     Symbol* name = (method)->name();                                     \
   109     Symbol* name = (method)->name();                                     \
   112     Symbol* signature = (method)->signature();                           \
   110     Symbol* signature = (method)->signature();                           \
   113     HOTSPOT_METHOD_COMPILE_END(                                          \
   111     HOTSPOT_METHOD_COMPILE_END(                                          \
   118   }
   116   }
   119 #endif /* USDT2 */
   117 #endif /* USDT2 */
   120 
   118 
   121 #else //  ndef DTRACE_ENABLED
   119 #else //  ndef DTRACE_ENABLED
   122 
   120 
   123 #define DTRACE_METHOD_COMPILE_BEGIN_PROBE(compiler, method, comp_name)
   121 #define DTRACE_METHOD_COMPILE_BEGIN_PROBE(method, comp_name)
   124 #define DTRACE_METHOD_COMPILE_END_PROBE(compiler, method, comp_name, success)
   122 #define DTRACE_METHOD_COMPILE_END_PROBE(method, comp_name, success)
   125 
   123 
   126 #endif // ndef DTRACE_ENABLED
   124 #endif // ndef DTRACE_ENABLED
   127 
   125 
   128 bool CompileBroker::_initialized = false;
   126 bool CompileBroker::_initialized = false;
   129 volatile bool CompileBroker::_should_block = false;
   127 volatile bool CompileBroker::_should_block = false;
  1764     assert(!method->is_native(), "no longer compile natives");
  1762     assert(!method->is_native(), "no longer compile natives");
  1765 
  1763 
  1766     // Save information about this method in case of failure.
  1764     // Save information about this method in case of failure.
  1767     set_last_compile(thread, method, is_osr, task_level);
  1765     set_last_compile(thread, method, is_osr, task_level);
  1768 
  1766 
  1769     DTRACE_METHOD_COMPILE_BEGIN_PROBE(compiler(task_level), method,
  1767     DTRACE_METHOD_COMPILE_BEGIN_PROBE(method, compiler_name(task_level));
  1770                                       compiler_name(task_level));
       
  1771   }
  1768   }
  1772 
  1769 
  1773   // Allocate a new set of JNI handles.
  1770   // Allocate a new set of JNI handles.
  1774   push_jni_handle_block();
  1771   push_jni_handle_block();
  1775   Method* target_handle = task->method();
  1772   Method* target_handle = task->method();
  1847   }
  1844   }
  1848   pop_jni_handle_block();
  1845   pop_jni_handle_block();
  1849 
  1846 
  1850   methodHandle method(thread, task->method());
  1847   methodHandle method(thread, task->method());
  1851 
  1848 
  1852   DTRACE_METHOD_COMPILE_END_PROBE(compiler(task_level), method,
  1849   DTRACE_METHOD_COMPILE_END_PROBE(method, compiler_name(task_level), task->is_success());
  1853                                   compiler_name(task_level), task->is_success());
       
  1854 
  1850 
  1855   collect_statistics(thread, time, task);
  1851   collect_statistics(thread, time, task);
  1856 
  1852 
  1857   if (PrintCompilation && PrintCompilation2) {
  1853   if (PrintCompilation && PrintCompilation2) {
  1858     tty->print("%7d ", (int) tty->time_stamp().milliseconds());  // print timestamp
  1854     tty->print("%7d ", (int) tty->time_stamp().milliseconds());  // print timestamp