< prev index next >
src/share/vm/opto/cfgnode.cpp
Print this page
*** 34,43 ****
--- 34,47 ----
#include "opto/mulnode.hpp"
#include "opto/phaseX.hpp"
#include "opto/regmask.hpp"
#include "opto/runtime.hpp"
#include "opto/subnode.hpp"
+ #if INCLUDE_ALL_GCS
+ #include "gc_implementation/shenandoah/c2/shenandoahBarrierSetC2.hpp"
+ #include "gc_implementation/shenandoah/c2/shenandoahSupport.hpp"
+ #endif
// Portions of code courtesy of Clifford Click
// Optimization - Graph Style
*** 586,595 ****
--- 590,602 ----
assert( n->req() == 2 && n->in(1) != NULL, "Only one data input expected" );
in = n->in(1); // replaced by unique input
if( n->as_Phi()->is_unsafe_data_reference(in) )
in = phase->C->top(); // replaced by top
}
+ if (n->outcnt() == 0) {
+ in = phase->C->top();
+ }
igvn->replace_node(n, in);
}
else if( n->is_Region() ) { // Update all incoming edges
assert( !igvn->eqv(n, this), "Must be removed from DefUse edges");
uint uses_found = 0;
*** 1626,1636 ****
if (n != top) { // Not already top?
PhaseIterGVN *igvn = phase->is_IterGVN();
if (can_reshape && igvn != NULL) {
igvn->_worklist.push(r);
}
! set_req(j, top); // Nuke it down
progress = this; // Record progress
}
}
}
--- 1633,1648 ----
if (n != top) { // Not already top?
PhaseIterGVN *igvn = phase->is_IterGVN();
if (can_reshape && igvn != NULL) {
igvn->_worklist.push(r);
}
! // Nuke it down
! if (can_reshape) {
! set_req_X(j, top, igvn);
! } else {
! set_req(j, top);
! }
progress = this; // Record progress
}
}
}
< prev index next >