comparison src/share/vm/opto/parse.hpp @ 435:b1d6a3e95810

6766316: assert(!nocreate,"Cannot build a phi for a block already parsed.") Summary: Don't use the invariant local information if there are irreducible loops. Reviewed-by: never
author kvn
date Tue, 18 Nov 2008 12:40:28 -0800
parents 194b8e3a2fc4
children 98cb887364d3
comparison
equal deleted inserted replaced
434:de78b80cedec 435:b1d6a3e95810
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)); }