src/share/vm/opto/compile.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 8031320_8u Sdiff src/share/vm/opto

src/share/vm/opto/compile.hpp

Print this page
rev 5968 : 8031320: Use Intel RTM instructions for locks
Summary: Use RTM for inflated locks and stack locks.
Reviewed-by: iveresov, twisti, roland, dcubed


 302   bool                  _has_unsafe_access;     // True if the method _may_ produce faults in unsafe loads or stores.
 303   bool                  _has_stringbuilder;     // True StringBuffers or StringBuilders are allocated
 304   bool                  _has_boxed_value;       // True if a boxed object is allocated
 305   int                   _max_vector_size;       // Maximum size of generated vectors
 306   uint                  _trap_hist[trapHistLength];  // Cumulative traps
 307   bool                  _trap_can_recompile;    // Have we emitted a recompiling trap?
 308   uint                  _decompile_count;       // Cumulative decompilation counts.
 309   bool                  _do_inlining;           // True if we intend to do inlining
 310   bool                  _do_scheduling;         // True if we intend to do scheduling
 311   bool                  _do_freq_based_layout;  // True if we intend to do frequency based block layout
 312   bool                  _do_count_invocations;  // True if we generate code to count invocations
 313   bool                  _do_method_data_update; // True if we generate code to update MethodData*s
 314   int                   _AliasLevel;            // Locally-adjusted version of AliasLevel flag.
 315   bool                  _print_assembly;        // True if we should dump assembly code for this compilation
 316   bool                  _print_inlining;        // True if we should print inlining for this compilation
 317   bool                  _print_intrinsics;      // True if we should print intrinsics for this compilation
 318 #ifndef PRODUCT
 319   bool                  _trace_opto_output;
 320   bool                  _parsed_irreducible_loop; // True if ciTypeFlow detected irreducible loops during parsing
 321 #endif
 322 
 323   // JSR 292
 324   bool                  _has_method_handle_invokes; // True if this method has MethodHandle invokes.

 325 
 326   // Compilation environment.
 327   Arena                 _comp_arena;            // Arena with lifetime equivalent to Compile
 328   ciEnv*                _env;                   // CI interface
 329   CompileLog*           _log;                   // from CompilerThread
 330   const char*           _failure_reason;        // for record_failure/failing pattern
 331   GrowableArray<CallGenerator*>* _intrinsics;   // List of intrinsics.
 332   GrowableArray<Node*>* _macro_nodes;           // List of nodes which need to be expanded before matching.
 333   GrowableArray<Node*>* _predicate_opaqs;       // List of Opaque1 nodes for the loop predicates.
 334   GrowableArray<Node*>* _expensive_nodes;       // List of nodes that are expensive to compute and that we'd better not let the GVN freely common
 335   ConnectionGraph*      _congraph;
 336 #ifndef PRODUCT
 337   IdealGraphPrinter*    _printer;
 338 #endif
 339 
 340 
 341   // Node management
 342   uint                  _unique;                // Counter for unique Node indices
 343   VectorSet             _dead_node_list;        // Set of dead nodes
 344   uint                  _dead_node_count;       // Number of dead nodes; VectorSet::Size() is O(N).


 574   uint              decompile_count() const     { return _decompile_count; }
 575   void          set_decompile_count(uint c)     { _decompile_count = c; }
 576   bool              allow_range_check_smearing() const;
 577   bool              do_inlining() const         { return _do_inlining; }
 578   void          set_do_inlining(bool z)         { _do_inlining = z; }
 579   bool              do_scheduling() const       { return _do_scheduling; }
 580   void          set_do_scheduling(bool z)       { _do_scheduling = z; }
 581   bool              do_freq_based_layout() const{ return _do_freq_based_layout; }
 582   void          set_do_freq_based_layout(bool z){ _do_freq_based_layout = z; }
 583   bool              do_count_invocations() const{ return _do_count_invocations; }
 584   void          set_do_count_invocations(bool z){ _do_count_invocations = z; }
 585   bool              do_method_data_update() const { return _do_method_data_update; }
 586   void          set_do_method_data_update(bool z) { _do_method_data_update = z; }
 587   int               AliasLevel() const          { return _AliasLevel; }
 588   bool              print_assembly() const       { return _print_assembly; }
 589   void          set_print_assembly(bool z)       { _print_assembly = z; }
 590   bool              print_inlining() const       { return _print_inlining; }
 591   void          set_print_inlining(bool z)       { _print_inlining = z; }
 592   bool              print_intrinsics() const     { return _print_intrinsics; }
 593   void          set_print_intrinsics(bool z)     { _print_intrinsics = z; }




 594   // check the CompilerOracle for special behaviours for this compile
 595   bool          method_has_option(const char * option) {
 596     return method() != NULL && method()->has_option(option);
 597   }
 598 #ifndef PRODUCT
 599   bool          trace_opto_output() const       { return _trace_opto_output; }
 600   bool              parsed_irreducible_loop() const { return _parsed_irreducible_loop; }
 601   void          set_parsed_irreducible_loop(bool z) { _parsed_irreducible_loop = z; }
 602 #endif
 603 
 604   // JSR 292
 605   bool              has_method_handle_invokes() const { return _has_method_handle_invokes;     }
 606   void          set_has_method_handle_invokes(bool z) {        _has_method_handle_invokes = z; }
 607 
 608   Ticks _latest_stage_start_counter;
 609 
 610   void begin_method() {
 611 #ifndef PRODUCT
 612     if (_printer) _printer->begin_method(this);
 613 #endif




 302   bool                  _has_unsafe_access;     // True if the method _may_ produce faults in unsafe loads or stores.
 303   bool                  _has_stringbuilder;     // True StringBuffers or StringBuilders are allocated
 304   bool                  _has_boxed_value;       // True if a boxed object is allocated
 305   int                   _max_vector_size;       // Maximum size of generated vectors
 306   uint                  _trap_hist[trapHistLength];  // Cumulative traps
 307   bool                  _trap_can_recompile;    // Have we emitted a recompiling trap?
 308   uint                  _decompile_count;       // Cumulative decompilation counts.
 309   bool                  _do_inlining;           // True if we intend to do inlining
 310   bool                  _do_scheduling;         // True if we intend to do scheduling
 311   bool                  _do_freq_based_layout;  // True if we intend to do frequency based block layout
 312   bool                  _do_count_invocations;  // True if we generate code to count invocations
 313   bool                  _do_method_data_update; // True if we generate code to update MethodData*s
 314   int                   _AliasLevel;            // Locally-adjusted version of AliasLevel flag.
 315   bool                  _print_assembly;        // True if we should dump assembly code for this compilation
 316   bool                  _print_inlining;        // True if we should print inlining for this compilation
 317   bool                  _print_intrinsics;      // True if we should print intrinsics for this compilation
 318 #ifndef PRODUCT
 319   bool                  _trace_opto_output;
 320   bool                  _parsed_irreducible_loop; // True if ciTypeFlow detected irreducible loops during parsing
 321 #endif

 322   // JSR 292
 323   bool                  _has_method_handle_invokes; // True if this method has MethodHandle invokes.
 324   RTMState              _rtm_state;             // State of Restricted Transactional Memory usage
 325 
 326   // Compilation environment.
 327   Arena                 _comp_arena;            // Arena with lifetime equivalent to Compile
 328   ciEnv*                _env;                   // CI interface
 329   CompileLog*           _log;                   // from CompilerThread
 330   const char*           _failure_reason;        // for record_failure/failing pattern
 331   GrowableArray<CallGenerator*>* _intrinsics;   // List of intrinsics.
 332   GrowableArray<Node*>* _macro_nodes;           // List of nodes which need to be expanded before matching.
 333   GrowableArray<Node*>* _predicate_opaqs;       // List of Opaque1 nodes for the loop predicates.
 334   GrowableArray<Node*>* _expensive_nodes;       // List of nodes that are expensive to compute and that we'd better not let the GVN freely common
 335   ConnectionGraph*      _congraph;
 336 #ifndef PRODUCT
 337   IdealGraphPrinter*    _printer;
 338 #endif
 339 
 340 
 341   // Node management
 342   uint                  _unique;                // Counter for unique Node indices
 343   VectorSet             _dead_node_list;        // Set of dead nodes
 344   uint                  _dead_node_count;       // Number of dead nodes; VectorSet::Size() is O(N).


 574   uint              decompile_count() const     { return _decompile_count; }
 575   void          set_decompile_count(uint c)     { _decompile_count = c; }
 576   bool              allow_range_check_smearing() const;
 577   bool              do_inlining() const         { return _do_inlining; }
 578   void          set_do_inlining(bool z)         { _do_inlining = z; }
 579   bool              do_scheduling() const       { return _do_scheduling; }
 580   void          set_do_scheduling(bool z)       { _do_scheduling = z; }
 581   bool              do_freq_based_layout() const{ return _do_freq_based_layout; }
 582   void          set_do_freq_based_layout(bool z){ _do_freq_based_layout = z; }
 583   bool              do_count_invocations() const{ return _do_count_invocations; }
 584   void          set_do_count_invocations(bool z){ _do_count_invocations = z; }
 585   bool              do_method_data_update() const { return _do_method_data_update; }
 586   void          set_do_method_data_update(bool z) { _do_method_data_update = z; }
 587   int               AliasLevel() const          { return _AliasLevel; }
 588   bool              print_assembly() const       { return _print_assembly; }
 589   void          set_print_assembly(bool z)       { _print_assembly = z; }
 590   bool              print_inlining() const       { return _print_inlining; }
 591   void          set_print_inlining(bool z)       { _print_inlining = z; }
 592   bool              print_intrinsics() const     { return _print_intrinsics; }
 593   void          set_print_intrinsics(bool z)     { _print_intrinsics = z; }
 594   RTMState          rtm_state()  const           { return _rtm_state; }
 595   void          set_rtm_state(RTMState s)        { _rtm_state = s; }
 596   bool              use_rtm() const              { return (_rtm_state & NoRTM) == 0; }
 597   bool          profile_rtm() const              { return _rtm_state == ProfileRTM; }
 598   // check the CompilerOracle for special behaviours for this compile
 599   bool          method_has_option(const char * option) {
 600     return method() != NULL && method()->has_option(option);
 601   }
 602 #ifndef PRODUCT
 603   bool          trace_opto_output() const       { return _trace_opto_output; }
 604   bool              parsed_irreducible_loop() const { return _parsed_irreducible_loop; }
 605   void          set_parsed_irreducible_loop(bool z) { _parsed_irreducible_loop = z; }
 606 #endif
 607 
 608   // JSR 292
 609   bool              has_method_handle_invokes() const { return _has_method_handle_invokes;     }
 610   void          set_has_method_handle_invokes(bool z) {        _has_method_handle_invokes = z; }
 611 
 612   Ticks _latest_stage_start_counter;
 613 
 614   void begin_method() {
 615 #ifndef PRODUCT
 616     if (_printer) _printer->begin_method(this);
 617 #endif


src/share/vm/opto/compile.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File