Mercurial > hg > truffle
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)); } |