< prev index next >

src/hotspot/share/opto/compile.hpp

Print this page
@@ -180,27 +180,30 @@
    const bool _do_escape_analysis;    // Do escape analysis.
    const bool _do_iterative_escape_analysis;  // Do iterative escape analysis.
    const bool _do_reduce_allocation_merges;  // Do try to reduce allocation merges.
    const bool _eliminate_boxing;      // Do boxing elimination.
    const bool _do_locks_coarsening;   // Do locks coarsening
+   const bool _for_preload;           // Generate code for preload (before Java method execution), do class init barriers
    const bool _do_superword;          // Do SuperWord
    const bool _install_code;          // Install the code that was compiled
   public:
    Options(bool subsume_loads,
            bool do_escape_analysis,
            bool do_iterative_escape_analysis,
            bool do_reduce_allocation_merges,
            bool eliminate_boxing,
            bool do_locks_coarsening,
            bool do_superword,
+           bool for_preload,
            bool install_code) :
            _subsume_loads(subsume_loads),
            _do_escape_analysis(do_escape_analysis),
            _do_iterative_escape_analysis(do_iterative_escape_analysis),
            _do_reduce_allocation_merges(do_reduce_allocation_merges),
            _eliminate_boxing(eliminate_boxing),
            _do_locks_coarsening(do_locks_coarsening),
+           _for_preload(for_preload),
            _do_superword(do_superword),
            _install_code(install_code) {
    }
  
    static Options for_runtime_stub() {

@@ -209,10 +212,11 @@
         /* do_escape_analysis = */ false,
         /* do_iterative_escape_analysis = */ false,
         /* do_reduce_allocation_merges = */ false,
         /* eliminate_boxing = */ false,
         /* do_lock_coarsening = */ false,
+        /* for_preload = */ false,
         /* do_superword = */ true,
         /* install_code = */ true
      );
    }
  };

@@ -353,10 +357,11 @@
    bool                  _has_irreducible_loop;  // Found irreducible loops
    // JSR 292
    bool                  _has_method_handle_invokes; // True if this method has MethodHandle invokes.
    bool                  _has_monitors;          // Metadata transfered to nmethod to enable Continuations lock-detection fastpath
    bool                  _clinit_barrier_on_entry; // True if clinit barrier is needed on nmethod entry
+   bool                  _has_clinit_barriers;   // True if compiled code has clinit barriers
    RTMState              _rtm_state;             // State of Restricted Transactional Memory usage
    int                   _loop_opts_cnt;         // loop opts round
    uint                  _stress_seed;           // Seed for stress testing
  
    // Compilation environment.

@@ -595,10 +600,13 @@
    bool              should_install_code() const { return _options._install_code; }
    /** Do locks coarsening. */
    bool              do_locks_coarsening() const { return _options._do_locks_coarsening; }
    bool              do_superword() const        { return _options._do_superword; }
  
+   bool              do_clinit_barriers()  const { return _options._for_preload; }
+   bool              for_preload()         const { return _options._for_preload; }
+ 
    // Other fixed compilation parameters.
    ciMethod*         method() const              { return _method; }
    int               entry_bci() const           { return _entry_bci; }
    bool              is_osr_compilation() const  { return _entry_bci != InvocationEntryBci; }
    bool              is_method_compilation() const { return (_method != nullptr && !_method->flags().is_native()); }

@@ -675,10 +683,12 @@
    void          set_max_node_limit(uint n)       { _max_node_limit = n; }
    bool              clinit_barrier_on_entry()       { return _clinit_barrier_on_entry; }
    void          set_clinit_barrier_on_entry(bool z) { _clinit_barrier_on_entry = z; }
    bool              has_monitors() const         { return _has_monitors; }
    void          set_has_monitors(bool v)         { _has_monitors = v; }
+   bool              has_clinit_barriers()        { return _has_clinit_barriers; }
+   void          set_has_clinit_barriers(bool z)  { _has_clinit_barriers = z; }
  
    // check the CompilerOracle for special behaviours for this compile
    bool          method_has_option(CompileCommandEnum option) {
      return method() != nullptr && method()->has_option(option);
    }
< prev index next >