src/share/vm/opto/loopopts.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/loopopts.cpp	Mon Dec 14 16:16:51 2015
--- new/src/share/vm/opto/loopopts.cpp	Mon Dec 14 16:16:50 2015

*** 24,33 **** --- 24,34 ---- #include "precompiled.hpp" #include "memory/allocation.inline.hpp" #include "opto/addnode.hpp" #include "opto/connode.hpp" + #include "opto/castnode.hpp" #include "opto/divnode.hpp" #include "opto/loopnode.hpp" #include "opto/matcher.hpp" #include "opto/mulnode.hpp" #include "opto/movenode.hpp"
*** 898,907 **** --- 899,916 ---- // Attempt to remix address expressions for loop invariants Node *m = remix_address_expressions( n ); if( m ) return m; + if (n->is_ConstraintCast()) { + Node* dom_cast = n->as_ConstraintCast()->dominating_cast(this); + if (dom_cast != NULL) { + _igvn.replace_node(n, dom_cast); + return dom_cast; + } + } + // Determine if the Node has inputs from some local Phi. // Returns the block to clone thru. Node *n_blk = has_local_phi_input( n ); if( !n_blk ) return n;

src/share/vm/opto/loopopts.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File