< prev index next >
src/hotspot/share/opto/compile.cpp
Print this page
@@ -77,10 +77,13 @@
#include "utilities/copy.hpp"
#include "utilities/macros.hpp"
#if INCLUDE_ZGC
#include "gc/z/c2/zBarrierSetC2.hpp"
#endif
+#if INCLUDE_SHENANDOAHGC
+#include "gc/shenandoah/c2/shenandoahBarrierSetC2.hpp"
+#endif
// -------------------- Compile::mach_constant_base_node -----------------------
// Constant table base node singleton.
MachConstantBaseNode* Compile::mach_constant_base_node() {
@@ -2402,10 +2405,19 @@
assert(failing(), "must bail out w/ explicit message");
return;
}
}
+ print_method(PHASE_BEFORE_BARRIER_EXPAND, 2);
+
+#if INCLUDE_SHENANDOAHGC
+ if (!ShenandoahWriteBarrierNode::expand(this, igvn, loop_opts_cnt)) {
+ assert(failing(), "must bail out w/ explicit message");
+ return;
+ }
+#endif
+
if (opaque4_count() > 0) {
C->remove_opaque4_nodes(igvn);
igvn.optimize();
}
@@ -3051,11 +3063,11 @@
wq.push(n);
for (uint next = 0; next < wq.size(); ++next) {
Node *m = wq.at(next);
for (DUIterator_Fast imax, i = m->fast_outs(imax); i < imax; i++) {
Node* use = m->fast_out(i);
- if (use->is_Mem() || use->is_EncodeNarrowPtr()) {
+ if (use->is_Mem() || use->is_EncodeNarrowPtr() || use->is_ShenandoahBarrier()) {
use->ensure_control_or_add_prec(n->in(0));
} else {
switch(use->Opcode()) {
case Op_AddP:
case Op_DecodeN:
< prev index next >