< prev index next >

src/hotspot/share/opto/compile.hpp

Print this page




  73 class PhaseCCP;
  74 class PhaseCCP_DCE;
  75 class RootNode;
  76 class relocInfo;
  77 class Scope;
  78 class StartNode;
  79 class SafePointNode;
  80 class JVMState;
  81 class Type;
  82 class TypeData;
  83 class TypeInt;
  84 class TypePtr;
  85 class TypeOopPtr;
  86 class TypeFunc;
  87 class Unique_Node_List;
  88 class nmethod;
  89 class WarmCallInfo;
  90 class Node_Stack;
  91 struct Final_Reshape_Counts;
  92 










  93 typedef unsigned int node_idx_t;
  94 class NodeCloneInfo {
  95  private:
  96   uint64_t _idx_clone_orig;
  97  public:
  98 
  99   void set_idx(node_idx_t idx) {
 100     _idx_clone_orig = (_idx_clone_orig & CONST64(0xFFFFFFFF00000000)) | idx;
 101   }
 102   node_idx_t idx() const { return (node_idx_t)(_idx_clone_orig & 0xFFFFFFFF); }
 103 
 104   void set_gen(int generation) {
 105     uint64_t g = (uint64_t)generation << 32;
 106     _idx_clone_orig = (_idx_clone_orig & 0xFFFFFFFF) | g;
 107   }
 108   int gen() const { return (int)(_idx_clone_orig >> 32); }
 109 
 110   void set(uint64_t x) { _idx_clone_orig = x; }
 111   void set(node_idx_t x, int g) { set_idx(x); set_gen(g); }
 112   uint64_t get() const { return _idx_clone_orig; }


1062 
1063   void process_print_inlining();
1064   void dump_print_inlining();
1065 
1066   bool over_inlining_cutoff() const {
1067     if (!inlining_incrementally()) {
1068       return unique() > (uint)NodeCountInliningCutoff;
1069     } else {
1070       return live_nodes() > (uint)LiveNodeCountInliningCutoff;
1071     }
1072   }
1073 
1074   void inc_number_of_mh_late_inlines() { _number_of_mh_late_inlines++; }
1075   void dec_number_of_mh_late_inlines() { assert(_number_of_mh_late_inlines > 0, "_number_of_mh_late_inlines < 0 !"); _number_of_mh_late_inlines--; }
1076   bool has_mh_late_inlines() const     { return _number_of_mh_late_inlines > 0; }
1077 
1078   void inline_incrementally_one(PhaseIterGVN& igvn);
1079   void inline_incrementally(PhaseIterGVN& igvn);
1080   void inline_string_calls(bool parse_time);
1081   void inline_boxing_calls(PhaseIterGVN& igvn);

1082 
1083   // Matching, CFG layout, allocation, code generation
1084   PhaseCFG*         cfg()                       { return _cfg; }
1085   bool              select_24_bit_instr() const { return _select_24_bit_instr; }
1086   bool              in_24_bit_fp_mode() const   { return _in_24_bit_fp_mode; }
1087   bool              has_java_calls() const      { return _java_calls > 0; }
1088   int               java_calls() const          { return _java_calls; }
1089   int               inner_loops() const         { return _inner_loops; }
1090   Matcher*          matcher()                   { return _matcher; }
1091   PhaseRegAlloc*    regalloc()                  { return _regalloc; }
1092   int               frame_slots() const         { return _frame_slots; }
1093   int               frame_size_in_words() const; // frame_slots in units of the polymorphic 'words'
1094   int               frame_size_in_bytes() const { return _frame_slots << LogBytesPerInt; }
1095   RegMask&          FIRST_STACK_mask()          { return _FIRST_STACK_mask; }
1096   Arena*            indexSet_arena()            { return _indexSet_arena; }
1097   void*             indexSet_free_block_list()  { return _indexSet_free_block_list; }
1098   uint              node_bundling_limit()       { return _node_bundling_limit; }
1099   Bundle*           node_bundling_base()        { return _node_bundling_base; }
1100   void          set_node_bundling_limit(uint n) { _node_bundling_limit = n; }
1101   void          set_node_bundling_base(Bundle* b) { _node_bundling_base = b; }




  73 class PhaseCCP;
  74 class PhaseCCP_DCE;
  75 class RootNode;
  76 class relocInfo;
  77 class Scope;
  78 class StartNode;
  79 class SafePointNode;
  80 class JVMState;
  81 class Type;
  82 class TypeData;
  83 class TypeInt;
  84 class TypePtr;
  85 class TypeOopPtr;
  86 class TypeFunc;
  87 class Unique_Node_List;
  88 class nmethod;
  89 class WarmCallInfo;
  90 class Node_Stack;
  91 struct Final_Reshape_Counts;
  92 
  93 enum LoopOptsMode {
  94   LoopOptsDefault = 0,
  95   LoopOptsNone = 1,
  96   LoopOptsSkipSplitIf = 2,
  97   LoopOptsShenandoahExpand = 3,
  98   LoopOptsShenandoahPostExpand = 4,
  99   LoopOptsVerify = 5,
 100   LoopOptsZgcLastRound = 6
 101 };
 102 
 103 typedef unsigned int node_idx_t;
 104 class NodeCloneInfo {
 105  private:
 106   uint64_t _idx_clone_orig;
 107  public:
 108 
 109   void set_idx(node_idx_t idx) {
 110     _idx_clone_orig = (_idx_clone_orig & CONST64(0xFFFFFFFF00000000)) | idx;
 111   }
 112   node_idx_t idx() const { return (node_idx_t)(_idx_clone_orig & 0xFFFFFFFF); }
 113 
 114   void set_gen(int generation) {
 115     uint64_t g = (uint64_t)generation << 32;
 116     _idx_clone_orig = (_idx_clone_orig & 0xFFFFFFFF) | g;
 117   }
 118   int gen() const { return (int)(_idx_clone_orig >> 32); }
 119 
 120   void set(uint64_t x) { _idx_clone_orig = x; }
 121   void set(node_idx_t x, int g) { set_idx(x); set_gen(g); }
 122   uint64_t get() const { return _idx_clone_orig; }


1072 
1073   void process_print_inlining();
1074   void dump_print_inlining();
1075 
1076   bool over_inlining_cutoff() const {
1077     if (!inlining_incrementally()) {
1078       return unique() > (uint)NodeCountInliningCutoff;
1079     } else {
1080       return live_nodes() > (uint)LiveNodeCountInliningCutoff;
1081     }
1082   }
1083 
1084   void inc_number_of_mh_late_inlines() { _number_of_mh_late_inlines++; }
1085   void dec_number_of_mh_late_inlines() { assert(_number_of_mh_late_inlines > 0, "_number_of_mh_late_inlines < 0 !"); _number_of_mh_late_inlines--; }
1086   bool has_mh_late_inlines() const     { return _number_of_mh_late_inlines > 0; }
1087 
1088   void inline_incrementally_one(PhaseIterGVN& igvn);
1089   void inline_incrementally(PhaseIterGVN& igvn);
1090   void inline_string_calls(bool parse_time);
1091   void inline_boxing_calls(PhaseIterGVN& igvn);
1092   bool optimize_loops(int& loop_opts_cnt, PhaseIterGVN& igvn, LoopOptsMode mode);
1093 
1094   // Matching, CFG layout, allocation, code generation
1095   PhaseCFG*         cfg()                       { return _cfg; }
1096   bool              select_24_bit_instr() const { return _select_24_bit_instr; }
1097   bool              in_24_bit_fp_mode() const   { return _in_24_bit_fp_mode; }
1098   bool              has_java_calls() const      { return _java_calls > 0; }
1099   int               java_calls() const          { return _java_calls; }
1100   int               inner_loops() const         { return _inner_loops; }
1101   Matcher*          matcher()                   { return _matcher; }
1102   PhaseRegAlloc*    regalloc()                  { return _regalloc; }
1103   int               frame_slots() const         { return _frame_slots; }
1104   int               frame_size_in_words() const; // frame_slots in units of the polymorphic 'words'
1105   int               frame_size_in_bytes() const { return _frame_slots << LogBytesPerInt; }
1106   RegMask&          FIRST_STACK_mask()          { return _FIRST_STACK_mask; }
1107   Arena*            indexSet_arena()            { return _indexSet_arena; }
1108   void*             indexSet_free_block_list()  { return _indexSet_free_block_list; }
1109   uint              node_bundling_limit()       { return _node_bundling_limit; }
1110   Bundle*           node_bundling_base()        { return _node_bundling_base; }
1111   void          set_node_bundling_limit(uint n) { _node_bundling_limit = n; }
1112   void          set_node_bundling_base(Bundle* b) { _node_bundling_base = b; }


< prev index next >