< prev index next >
src/share/vm/opto/graphKit.cpp
Print this page
rev 11994 : 8252366: Shenandoah: revert/cleanup changes in graphKit.cpp
Reviewed-by: XXX
*** 1719,1730 ****
BasicType elembt = elemtype->array_element_basic_type();
Node* adr = array_element_address(ary, idx, elembt, arytype->size());
if (elembt == T_NARROWOOP) {
elembt = T_OBJECT; // To satisfy switch in LoadNode::make()
}
- assert(elembt != T_OBJECT && elembt != T_ARRAY, "sanity");
Node* ld = make_load(ctl, adr, elemtype, elembt, arytype, MemNode::unordered);
return ld;
}
//-------------------------set_arguments_for_java_call-------------------------
// Arguments (pre-popped from the stack) are taken from the JVMS.
--- 1719,1734 ----
BasicType elembt = elemtype->array_element_basic_type();
Node* adr = array_element_address(ary, idx, elembt, arytype->size());
if (elembt == T_NARROWOOP) {
elembt = T_OBJECT; // To satisfy switch in LoadNode::make()
}
Node* ld = make_load(ctl, adr, elemtype, elembt, arytype, MemNode::unordered);
+ #if INCLUDE_ALL_GCS
+ if (UseShenandoahGC && (elembt == T_OBJECT || elembt == T_ARRAY)) {
+ ld = ShenandoahBarrierSetC2::bsc2()->load_reference_barrier(this, ld);
+ }
+ #endif
return ld;
}
//-------------------------set_arguments_for_java_call-------------------------
// Arguments (pre-popped from the stack) are taken from the JVMS.
*** 3882,3900 ****
// Final sync IdealKit and GraphKit.
final_sync(ideal);
}
- static void g1_write_barrier_pre_helper(const GraphKit& kit, Node* adr) {
- if (UseShenandoahGC && adr != NULL) {
- Node* c = kit.control();
- Node* call = c->in(1)->in(1)->in(1)->in(0);
- assert(call->is_g1_wb_pre_call(), "g1_wb_pre call expected");
- call->add_req(adr);
- }
- }
-
// G1 pre/post barriers
void GraphKit::g1_write_barrier_pre(bool do_load,
Node* obj,
Node* adr,
uint alias_idx,
--- 3886,3895 ----
*** 3998,4008 ****
} __ end_if(); // (pre_val != NULL)
} __ end_if(); // (!marking)
// Final sync IdealKit and GraphKit.
final_sync(ideal);
! g1_write_barrier_pre_helper(*this, adr);
}
//
// Update the card table and add card address to the queue
//
--- 3993,4011 ----
} __ end_if(); // (pre_val != NULL)
} __ end_if(); // (!marking)
// Final sync IdealKit and GraphKit.
final_sync(ideal);
!
! #if INCLUDE_ALL_GCS
! if (UseShenandoahGC && adr != NULL) {
! Node* c = control();
! Node* call = c->in(1)->in(1)->in(1)->in(0);
! assert(call->is_g1_wb_pre_call(), "g1_wb_pre call expected");
! call->add_req(adr);
! }
! #endif
}
//
// Update the card table and add card address to the queue
//
< prev index next >