equal
deleted
inserted
replaced
173 bool is_loop_head() const { return flow()->is_loop_head(); } |
173 bool is_loop_head() const { return flow()->is_loop_head(); } |
174 bool is_SEL_head() const { return flow()->is_single_entry_loop_head(); } |
174 bool is_SEL_head() const { return flow()->is_single_entry_loop_head(); } |
175 bool is_SEL_backedge(Block* pred) const{ return is_SEL_head() && pred->rpo() >= rpo(); } |
175 bool is_SEL_backedge(Block* pred) const{ return is_SEL_head() && pred->rpo() >= rpo(); } |
176 bool is_invariant_local(uint i) const { |
176 bool is_invariant_local(uint i) const { |
177 const JVMState* jvms = start_map()->jvms(); |
177 const JVMState* jvms = start_map()->jvms(); |
178 if (!jvms->is_loc(i)) return false; |
178 if (!jvms->is_loc(i) || flow()->outer()->has_irreducible_entry()) return false; |
179 return flow()->is_invariant_local(i - jvms->locoff()); |
179 return flow()->is_invariant_local(i - jvms->locoff()); |
180 } |
180 } |
181 bool can_elide_SEL_phi(uint i) const { assert(is_SEL_head(),""); return is_invariant_local(i); } |
181 bool can_elide_SEL_phi(uint i) const { assert(is_SEL_head(),""); return is_invariant_local(i); } |
182 |
182 |
183 const Type* peek(int off=0) const { return stack_type_at(start_sp() - (off+1)); } |
183 const Type* peek(int off=0) const { return stack_type_at(start_sp() - (off+1)); } |