diff --git a/static_core/irtoc/scripts/gc.irt b/static_core/irtoc/scripts/gc.irt index 36e010a1f7f1e3aaaaa0c2a1d3cabc150e04b7d8..3f9e7e40fb9323a496157ebb407d692102c967cb 100644 --- a/static_core/irtoc/scripts/gc.irt +++ b/static_core/irtoc/scripts/gc.irt @@ -209,9 +209,9 @@ end def PostInterRegionBarrierSlow() if Options.arch == :arm64 - mask = RegMask.new($full_regmap, :arg0, :callee0, :callee1, :callee2, :tmp0, :tmp1) + mask = RegMask.new($full_regmap, :arg0, :callee0, :tmp0, :tmp1) elsif Options.arch == :x86_64 - mask = RegMask.new($full_regmap, :arg0, :callee0, :caller0, :caller3, :tmp0, :tmp1) + mask = RegMask.new($full_regmap, :arg0, :callee0, :tmp0, :tmp1) else mask = $panda_mask end diff --git a/static_core/plugins/ets/irtoc_scripts/map_set_common.irt b/static_core/plugins/ets/irtoc_scripts/map_set_common.irt index c4a46e435cb727df2e441b2c159aa7828d604ec0..a04e8654fb86bdaaa659749f7bbfd8f7bd981eee 100644 --- a/static_core/plugins/ets/irtoc_scripts/map_set_common.irt +++ b/static_core/plugins/ets/irtoc_scripts/map_set_common.irt @@ -491,8 +491,8 @@ scoped_macro(:processMapDelete) do |map, key, idx, mode| entry := Load(buck_data, offset).ref entry_next := LoadI(entry).Imm(MapConstants::ENTRY_NEXT_OFFSET).ref entry_prev := LoadI(entry).Imm(MapConstants::ENTRY_PREV_OFFSET).ref - Store(entry_prev, MapConstants::ENTRY_NEXT_OFFSET, entry_next).ref - Store(entry_next, MapConstants::ENTRY_PREV_OFFSET, entry_prev).ref + Store(entry_prev, MapConstants::ENTRY_NEXT_OFFSET, entry_next).SetNeedBarrier(true).ref + Store(entry_next, MapConstants::ENTRY_PREV_OFFSET, entry_prev).SetNeedBarrier(true).ref new_len := SubI(buck_len).Imm(1).u32 StoreI(buck_hdr, new_len).Imm(EtsConstants::ESCOMPAT_ARRAY_ACTUAL_LENGTH_OFFSET).u32