180
181 virtual bool is_block() { return true; }
182 float succ_prob(uint i); // return probability of i'th successor
183 int num_fall_throughs(); // How many fall-through candidate this block has
184 void update_uncommon_branch(Block* un); // Lower branch prob to uncommon code
185 bool succ_fall_through(uint i); // Is successor "i" is a fall-through candidate
186 Block* lone_fall_through(); // Return lone fall-through Block or null
187
188 Block* dom_lca(Block* that); // Compute LCA in dominator tree.
189 #ifdef ASSERT
190 bool dominates(Block* that) {
191 int dom_diff = this->_dom_depth - that->_dom_depth;
192 if (dom_diff > 0) return false;
193 for (; dom_diff < 0; dom_diff++) that = that->_idom;
194 return this == that;
195 }
196 #endif
197
198 // Report the alignment required by this block. Must be a power of 2.
199 // The previous block will insert nops to get this alignment.
200 uint code_alignment();
201 uint compute_loop_alignment();
202
203 // BLOCK_FREQUENCY is a sentinel to mark uses of constant block frequencies.
204 // It is currently also used to scale such frequencies relative to
205 // FreqCountInvocations relative to the old value of 1500.
206 #define BLOCK_FREQUENCY(f) ((f * (double) 1500) / FreqCountInvocations)
207
208 // Register Pressure (estimate) for Splitting heuristic
209 uint _reg_pressure;
210 uint _ihrp_index;
211 uint _freg_pressure;
212 uint _fhrp_index;
213
214 // Mark and visited bits for an LCA calculation in insert_anti_dependences.
215 // Since they hold unique node indexes, they do not need reinitialization.
216 node_idx_t _raise_LCA_mark;
217 void set_raise_LCA_mark(node_idx_t x) { _raise_LCA_mark = x; }
218 node_idx_t raise_LCA_mark() const { return _raise_LCA_mark; }
219 node_idx_t _raise_LCA_visited;
220 void set_raise_LCA_visited(node_idx_t x) { _raise_LCA_visited = x; }
|
180
181 virtual bool is_block() { return true; }
182 float succ_prob(uint i); // return probability of i'th successor
183 int num_fall_throughs(); // How many fall-through candidate this block has
184 void update_uncommon_branch(Block* un); // Lower branch prob to uncommon code
185 bool succ_fall_through(uint i); // Is successor "i" is a fall-through candidate
186 Block* lone_fall_through(); // Return lone fall-through Block or null
187
188 Block* dom_lca(Block* that); // Compute LCA in dominator tree.
189 #ifdef ASSERT
190 bool dominates(Block* that) {
191 int dom_diff = this->_dom_depth - that->_dom_depth;
192 if (dom_diff > 0) return false;
193 for (; dom_diff < 0; dom_diff++) that = that->_idom;
194 return this == that;
195 }
196 #endif
197
198 // Report the alignment required by this block. Must be a power of 2.
199 // The previous block will insert nops to get this alignment.
200 uint code_alignment() const;
201 uint compute_loop_alignment();
202
203 // BLOCK_FREQUENCY is a sentinel to mark uses of constant block frequencies.
204 // It is currently also used to scale such frequencies relative to
205 // FreqCountInvocations relative to the old value of 1500.
206 #define BLOCK_FREQUENCY(f) ((f * (double) 1500) / FreqCountInvocations)
207
208 // Register Pressure (estimate) for Splitting heuristic
209 uint _reg_pressure;
210 uint _ihrp_index;
211 uint _freg_pressure;
212 uint _fhrp_index;
213
214 // Mark and visited bits for an LCA calculation in insert_anti_dependences.
215 // Since they hold unique node indexes, they do not need reinitialization.
216 node_idx_t _raise_LCA_mark;
217 void set_raise_LCA_mark(node_idx_t x) { _raise_LCA_mark = x; }
218 node_idx_t raise_LCA_mark() const { return _raise_LCA_mark; }
219 node_idx_t _raise_LCA_visited;
220 void set_raise_LCA_visited(node_idx_t x) { _raise_LCA_visited = x; }
|