Skip to content

Commit

Permalink
* align barrier part selection of aarch64 with x64 code
Browse files Browse the repository at this point in the history
  • Loading branch information
tschatzl committed Jan 7, 2025
1 parent d24a1ec commit 3eaedea
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions src/hotspot/cpu/aarch64/gc/g1/g1BarrierSetAssembler_aarch64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -250,11 +250,10 @@ static void generate_post_barrier_fast_path(MacroAssembler* masm,
assert(thread == rthread, "must be");
assert_different_registers(store_addr, new_val, thread, tmp1, tmp2, noreg);


bool gen_cross_region_check = ((ext_barrier_data & G1C2BarrierPostGenCrossCheck) != 0) || !XXXProfileBarrier;
bool gen_null_new_val_check = ((ext_barrier_data & G1C2BarrierPostGenNullCheck) != 0) || !XXXProfileBarrier;
bool gen_card_table_check = ((ext_barrier_data & G1C2BarrierPostGenCardCheck) != 0) || !XXXProfileBarrier;
bool null_check_first = ((ext_barrier_data & G1C2BarrierPostNullCheckFirst) != 0) || !XXXProfileBarrier;
bool gen_cross_region_check = ((ext_barrier_data & G1C2BarrierPostGenCrossCheck) != 0);
bool gen_null_new_val_check = ((ext_barrier_data & G1C2BarrierPostGenNullCheck) != 0);
bool gen_card_table_check = ((ext_barrier_data & G1C2BarrierPostGenCardCheck) != 0);
bool null_check_first = ((ext_barrier_data & G1C2BarrierPostNullCheckFirst) != 0);

bool new_val_maybe_null = ((ext_barrier_data & G1C2BarrierPostNotNull) != 0);

Expand All @@ -265,13 +264,15 @@ static void generate_post_barrier_fast_path(MacroAssembler* masm,
generate_post_barrier_same_region_check(masm, store_addr, new_val, tmp1, done);
}
// Crosses regions, storing null?
if (gen_null_new_val_check && new_val_maybe_null) {
if (gen_null_new_val_check || new_val_maybe_null) { /* fixme: new_val_maybe_null is very very inaccurate; maybe only use if no other information is available */
generate_post_barrier_null_new_value_check(masm, new_val, tmp1, done);
}
} else {
assert(gen_cross_region_check, "must be");
assert(gen_null_new_val_check, "must be");
generate_post_barrier_null_new_value_check(masm, new_val, tmp1, done);
if (gen_null_new_val_check || new_val_maybe_null) { /* fixme: new_val_maybe_null is very very inaccurate; maybe only use if no other information is available */
generate_post_barrier_null_new_value_check(masm, new_val, tmp1, done);
}
generate_post_barrier_same_region_check(masm, store_addr, new_val, tmp1, done);
}

Expand Down

0 comments on commit 3eaedea

Please sign in to comment.