# HG changeset patch # Parent 9bb21da5c49b2e110467907eb00be1b1e4a67b15 [backport] 8233021: Shenandoah: SBSC2::is_shenandoah_lrb_call should match all LRB shapes diff -r 9bb21da5c49b src/share/vm/gc_implementation/shenandoah/c2/shenandoahBarrierSetC2.cpp --- a/src/share/vm/gc_implementation/shenandoah/c2/shenandoahBarrierSetC2.cpp Mon Nov 23 19:43:35 2020 +0100 +++ b/src/share/vm/gc_implementation/shenandoah/c2/shenandoahBarrierSetC2.cpp Mon Nov 23 19:45:53 2020 +0100 @@ -34,8 +34,14 @@ } 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)); } bool ShenandoahBarrierSetC2::is_shenandoah_state_load(Node* n) {