--- a/src/hotspot/cpu/aarch64/aarch64.ad Wed Nov 13 11:21:15 2019 +0100
+++ b/src/hotspot/cpu/aarch64/aarch64.ad Wed Nov 13 11:37:29 2019 +0100
@@ -1192,9 +1192,6 @@
// predicate controlling translation of CompareAndSwapX
bool needs_acquiring_load_exclusive(const Node *load);
- // predicate controlling translation of StoreCM
- bool unnecessary_storestore(const Node *storecm);
-
// predicate controlling addressing modes
bool size_fits_all_mem_uses(AddPNode* addp, int shift);
%}
@@ -1583,29 +1580,6 @@
return true;
}
-// predicate controlling translation of StoreCM
-//
-// returns true if a StoreStore must precede the card write otherwise
-// false
-
-bool unnecessary_storestore(const Node *storecm)
-{
- assert(storecm->Opcode() == Op_StoreCM, "expecting a StoreCM");
-
- // we need to generate a dmb ishst between an object put and the
- // associated card mark when we are using CMS without conditional
- // card marking
-
- if (UseConcMarkSweepGC && !UseCondCardMark) {
- return false;
- }
-
- // a storestore is unnecesary in all other cases
-
- return true;
-}
-
-
#define __ _masm.
// advance declarations for helper functions to convert register
@@ -7220,7 +7194,6 @@
instruct storeimmCM0(immI0 zero, memory mem)
%{
match(Set mem (StoreCM mem zero));
- predicate(unnecessary_storestore(n));
ins_cost(INSN_COST);
format %{ "storestore (elided)\n\t"