src/share/vm/runtime/sharedRuntime.hpp

Print this page
rev 2893 : 7121756: Improve C1 inlining policy by using profiling at call sites
Summary: profile based recompilation of methods with C1 with more inlining.
Reviewed-by:

@@ -50,17 +50,23 @@
  private:
   static methodHandle resolve_sub_helper(JavaThread *thread,
                                      bool is_virtual,
                                      bool is_optimized, TRAPS);
 
+  static methodHandle resolve_profile_helper(JavaThread *thread, TRAPS);
+
   // Shared stub locations
 
   static RuntimeStub*        _wrong_method_blob;
   static RuntimeStub*        _ic_miss_blob;
   static RuntimeStub*        _resolve_opt_virtual_call_blob;
   static RuntimeStub*        _resolve_virtual_call_blob;
   static RuntimeStub*        _resolve_static_call_blob;
+#ifdef COMPILER1
+  static RuntimeStub* _resolve_profile_call_blob;
+  static RuntimeStub* _resolve_static_profile_call_blob;
+#endif
 
   static DeoptimizationBlob* _deopt_blob;
   static RicochetBlob*       _ricochet_blob;
 
   static SafepointBlob*      _polling_page_safepoint_handler_blob;

@@ -197,10 +203,20 @@
 
   static address get_ic_miss_stub() {
     assert(_ic_miss_blob!= NULL, "oops");
     return _ic_miss_blob->entry_point();
   }
+#ifdef COMPILER1
+  static address get_resolve_profile_call_stub() {
+    assert(_resolve_profile_call_blob != NULL, "oops");
+    return _resolve_profile_call_blob->entry_point();
+  }
+  static address get_resolve_static_profile_call_stub() {
+    assert(_resolve_static_profile_call_blob != NULL, "oops");
+    return _resolve_static_profile_call_blob->entry_point();
+  }
+#endif
 
   static address get_handle_wrong_method_stub() {
     assert(_wrong_method_blob!= NULL, "oops");
     return _wrong_method_blob->entry_point();
   }

@@ -485,10 +501,14 @@
 
   // Resolving of calls
   static address resolve_static_call_C     (JavaThread *thread);
   static address resolve_virtual_call_C    (JavaThread *thread);
   static address resolve_opt_virtual_call_C(JavaThread *thread);
+#ifdef COMPILER1
+  static address resolve_profile_call_C    (JavaThread *thread);
+  static address resolve_static_profile_call_C(JavaThread *thread);
+#endif
 
   // arraycopy, the non-leaf version.  (See StubRoutines for all the leaf calls.)
   static void slow_arraycopy_C(oopDesc* src,  jint src_pos,
                                oopDesc* dest, jint dest_pos,
                                jint length, JavaThread* thread);