< prev index next >

src/hotspot/share/ci/ciEnv.hpp

Print this page
@@ -36,10 +36,11 @@
  #include "oops/methodData.hpp"
  #include "runtime/javaThread.hpp"
  
  class CompileTask;
  class OopMapSet;
+ class SCCEntry;
  
  // ciEnv
  //
  // This class is the top level broker for requests from the compiler
  // to the VM.

@@ -227,12 +228,10 @@
      return get_metadata(o)->as_method_data();
    }
  
    ciMethod* get_method_from_handle(Method* method);
  
-   ciInstance* get_or_create_exception(jobject& handle, Symbol* name);
- 
    // Get a ciMethod representing either an unfound method or
    // a method with an unloaded holder.  Ensures uniqueness of
    // the result.
    ciMethod* get_unloaded_method(ciKlass*         holder,
                                  ciSymbol*        name,

@@ -377,15 +376,19 @@
                         int                       frame_words,
                         OopMapSet*                oop_map_set,
                         ExceptionHandlerTable*    handler_table,
                         ImplicitExceptionTable*   inc_table,
                         AbstractCompiler*         compiler,
+                        bool                      has_clinit_barriers,
+                        bool                      for_preload,
                         bool                      has_unsafe_access,
                         bool                      has_wide_vectors,
                         bool                      has_monitors,
                         int                       immediate_oops_patched,
-                        RTMState                  rtm_state = NoRTM);
+                        bool                      install_code,
+                        RTMState                  rtm_state = NoRTM,
+                        SCCEntry*                 entry = nullptr);
  
    // Access to certain well known ciObjects.
  #define VM_CLASS_FUNC(name, ignore_s) \
    ciInstanceKlass* name() { \
      return _##name;\

@@ -464,10 +467,17 @@
    void record_out_of_memory_failure();
  
    // RedefineClasses support
    void metadata_do(MetadataClosure* f) { _factory->metadata_do(f); }
  
+ private:
+   SCCEntry* _scc_clinit_barriers_entry;
+ 
+ public:
+   void  set_scc_clinit_barriers_entry(SCCEntry* entry) { _scc_clinit_barriers_entry = entry; }
+   SCCEntry* scc_clinit_barriers_entry()          const { return _scc_clinit_barriers_entry; }
+ 
    // Replay support
  private:
    static int klass_compare(const InstanceKlass* const &ik1, const InstanceKlass* const &ik2) {
      if (ik1 > ik2) {
        return 1;

@@ -508,8 +518,12 @@
    void record_call_site_obj(Thread* thread, oop obj);
    void record_call_site_method(Thread* thread, Method* adapter);
    void process_invokedynamic(const constantPoolHandle &cp, int index, JavaThread* thread);
    void process_invokehandle(const constantPoolHandle &cp, int index, JavaThread* thread);
    void find_dynamic_call_sites();
+ 
+   bool is_precompiled();
+   bool is_fully_initialized(InstanceKlass* ik);
+   InstanceKlass::ClassState compute_init_state_for_precompiled(InstanceKlass* ik);
  };
  
  #endif // SHARE_CI_CIENV_HPP
< prev index next >