hotspot/src/share/vm/jvmci/jvmciRuntime.hpp
changeset 38666 5ff19807abd5
parent 38229 7d3bad8f8ec8
child 38674 eacc567feae8
equal deleted inserted replaced
38665:0a34ead4e9d1 38666:5ff19807abd5
    64   bool is_aborted() { return _abort; }
    64   bool is_aborted() { return _abort; }
    65   void set_filename(char* path) {_filename = path; _lineNo = 0;}
    65   void set_filename(char* path) {_filename = path; _lineNo = 0;}
    66 };
    66 };
    67 
    67 
    68 class JVMCIRuntime: public AllStatic {
    68 class JVMCIRuntime: public AllStatic {
       
    69  public:
       
    70   // Constants describing whether JVMCI wants to be able to adjust the compilation
       
    71   // level selected for a method by the VM compilation policy and if so, based on
       
    72   // what information about the method being schedule for compilation.
       
    73   enum CompLevelAdjustment {
       
    74      none = 0,             // no adjustment
       
    75      by_holder = 1,        // adjust based on declaring class of method
       
    76      by_full_signature = 2 // adjust based on declaring class, name and signature of method
       
    77   };
       
    78 
    69  private:
    79  private:
    70   static jobject _HotSpotJVMCIRuntime_instance;
    80   static jobject _HotSpotJVMCIRuntime_instance;
    71   static bool _HotSpotJVMCIRuntime_initialized;
    81   static bool _HotSpotJVMCIRuntime_initialized;
    72   static bool _well_known_classes_initialized;
    82   static bool _well_known_classes_initialized;
    73 
    83 
    74   static int _trivial_prefixes_count;
    84   static int _trivial_prefixes_count;
    75   static char** _trivial_prefixes;
    85   static char** _trivial_prefixes;
    76 
    86 
       
    87   static CompLevelAdjustment _comp_level_adjustment;
       
    88 
    77   static bool _shutdown_called;
    89   static bool _shutdown_called;
    78 
    90 
    79   /**
    91   static CompLevel adjust_comp_level_inner(methodHandle method, bool is_osr, CompLevel level, JavaThread* thread);
    80    * Instantiates a service object, calls its default constructor and returns it.
       
    81    *
       
    82    * @param name the name of a class implementing jdk.vm.ci.service.Service
       
    83    */
       
    84   static Handle create_Service(const char* name, TRAPS);
       
    85 
    92 
    86  public:
    93  public:
    87   static bool is_HotSpotJVMCIRuntime_initialized() {
    94   static bool is_HotSpotJVMCIRuntime_initialized() {
    88     return _HotSpotJVMCIRuntime_initialized;
    95     return _HotSpotJVMCIRuntime_initialized;
    89   }
    96   }
   123   static bool shutdown_called() {
   130   static bool shutdown_called() {
   124     return _shutdown_called;
   131     return _shutdown_called;
   125   }
   132   }
   126 
   133 
   127   static bool treat_as_trivial(Method* method);
   134   static bool treat_as_trivial(Method* method);
       
   135 
       
   136   /**
       
   137    * Lets JVMCI modify the compilation level currently selected for a method by
       
   138    * the VM compilation policy.
       
   139    *
       
   140    * @param method the method being scheduled for compilation
       
   141    * @param is_osr specifies if the compilation is an OSR compilation
       
   142    * @param level the compilation level currently selected by the VM compilation policy
       
   143    * @param thread the current thread
       
   144    * @return the compilation level to use for the compilation
       
   145    */
       
   146   static CompLevel adjust_comp_level(methodHandle method, bool is_osr, CompLevel level, JavaThread* thread);
   128 
   147 
   129   static BasicType kindToBasicType(Handle kind, TRAPS);
   148   static BasicType kindToBasicType(Handle kind, TRAPS);
   130 
   149 
   131   // The following routines are all called from compiled JVMCI code
   150   // The following routines are all called from compiled JVMCI code
   132 
   151