comparison src/share/vm/opto/compile.hpp @ 20671:9e69e8d1c900

8058148: MaxNodeLimit and LiveNodeCountInliningCutoff Reviewed-by: kvn, roland
author vlivanov
date Mon, 24 Nov 2014 07:29:03 -0800
parents 119875f0fc67
children 7848fc12602b
comparison
equal deleted inserted replaced
20670:6a528388c7da 20671:9e69e8d1c900
288 int _num_loop_opts; // Number of iterations for doing loop optimiztions 288 int _num_loop_opts; // Number of iterations for doing loop optimiztions
289 int _max_inline_size; // Max inline size for this compilation 289 int _max_inline_size; // Max inline size for this compilation
290 int _freq_inline_size; // Max hot method inline size for this compilation 290 int _freq_inline_size; // Max hot method inline size for this compilation
291 int _fixed_slots; // count of frame slots not allocated by the register 291 int _fixed_slots; // count of frame slots not allocated by the register
292 // allocator i.e. locks, original deopt pc, etc. 292 // allocator i.e. locks, original deopt pc, etc.
293 uintx _max_node_limit; // Max unique node count during a single compilation.
293 // For deopt 294 // For deopt
294 int _orig_pc_slot; 295 int _orig_pc_slot;
295 int _orig_pc_slot_offset_in_bytes; 296 int _orig_pc_slot_offset_in_bytes;
296 297
297 int _major_progress; // Count of something big happening 298 int _major_progress; // Count of something big happening
592 void set_print_intrinsics(bool z) { _print_intrinsics = z; } 593 void set_print_intrinsics(bool z) { _print_intrinsics = z; }
593 RTMState rtm_state() const { return _rtm_state; } 594 RTMState rtm_state() const { return _rtm_state; }
594 void set_rtm_state(RTMState s) { _rtm_state = s; } 595 void set_rtm_state(RTMState s) { _rtm_state = s; }
595 bool use_rtm() const { return (_rtm_state & NoRTM) == 0; } 596 bool use_rtm() const { return (_rtm_state & NoRTM) == 0; }
596 bool profile_rtm() const { return _rtm_state == ProfileRTM; } 597 bool profile_rtm() const { return _rtm_state == ProfileRTM; }
598 uint max_node_limit() const { return (uint)_max_node_limit; }
599 void set_max_node_limit(uint n) { _max_node_limit = n; }
600
597 // check the CompilerOracle for special behaviours for this compile 601 // check the CompilerOracle for special behaviours for this compile
598 bool method_has_option(const char * option) { 602 bool method_has_option(const char * option) {
599 return method() != NULL && method()->has_option(option); 603 return method() != NULL && method()->has_option(option);
600 } 604 }
601 template<typename T> 605 template<typename T>
721 } 725 }
722 void record_method_not_compilable_all_tiers(const char* reason) { 726 void record_method_not_compilable_all_tiers(const char* reason) {
723 record_method_not_compilable(reason, true); 727 record_method_not_compilable(reason, true);
724 } 728 }
725 bool check_node_count(uint margin, const char* reason) { 729 bool check_node_count(uint margin, const char* reason) {
726 if (live_nodes() + margin > (uint)MaxNodeLimit) { 730 if (live_nodes() + margin > max_node_limit()) {
727 record_method_not_compilable(reason); 731 record_method_not_compilable(reason);
728 return true; 732 return true;
729 } else { 733 } else {
730 return false; 734 return false;
731 } 735 }