8233021: Shenandoah: SBSC2::is_shenandoah_lrb_call should match all LRB shapes

Reviewed-by: zgu
This commit is contained in:
Aleksey Shipilev 2019-10-25 17:30:25 +02:00
parent db24eb1e6a
commit 8e546a3fe0

View File

@ -297,8 +297,15 @@ bool ShenandoahBarrierSetC2::is_shenandoah_wb_pre_call(Node* call) {
}
bool ShenandoahBarrierSetC2::is_shenandoah_lrb_call(Node* call) {
return call->is_CallLeaf() &&
call->as_CallLeaf()->entry_point() == CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier);
if (!call->is_CallLeaf()) {
return false;
}
address entry_point = call->as_CallLeaf()->entry_point();
return (entry_point == CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier)) ||
(entry_point == CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_fixup)) ||
(entry_point == CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_fixup_narrow)) ||
(entry_point == CAST_FROM_FN_PTR(address, ShenandoahRuntime::load_reference_barrier_native));
}
bool ShenandoahBarrierSetC2::is_shenandoah_marking_if(PhaseTransform *phase, Node* n) {