< prev index next >
test/hotspot/jtreg/compiler/c2/aarch64/TestVolatiles.java
Print this page
*** 37,47 ****
* TestUnsafeVolatileGAS}
* and <testtype> in {G1,
* CMS,
* CMSCondMark,
* Serial,
! * Parallel}
*/
package compiler.c2.aarch64;
--- 37,49 ----
* TestUnsafeVolatileGAS}
* and <testtype> in {G1,
* CMS,
* CMSCondMark,
* Serial,
! * Parallel,
! * Shenandoah,
! * ShenandoahTraversal}
*/
package compiler.c2.aarch64;
*** 98,107 ****
--- 100,122 ----
argcount = 10;
procArgs = new String[argcount];
procArgs[argcount - 3] = "-XX:+UseConcMarkSweepGC";
procArgs[argcount - 2] = "-XX:+UseCondCardMark";
break;
+ case "Shenandoah":
+ argcount = 10;
+ procArgs = new String[argcount];
+ procArgs[argcount - 3] = "-XX:+UnlockExperimentalVMOptions";
+ procArgs[argcount - 2] = "-XX:+UseShenandoahGC";
+ break;
+ case "ShenandoahTraversal":
+ argcount = 11;
+ procArgs = new String[argcount];
+ procArgs[argcount - 4] = "-XX:+UnlockExperimentalVMOptions";
+ procArgs[argcount - 3] = "-XX:+UseShenandoahGC";
+ procArgs[argcount - 2] = "-XX:ShenandoahGCHeuristics=traversal";
+ break;
default:
throw new RuntimeException("unexpected test type " + testType);
}
// fill in arguments common to all cases
*** 353,362 ****
--- 368,388 ----
"strb",
"membar_volatile \\(elided\\)",
"ret"
};
break;
+ case "Shenandoah":
+ case "ShenandoahTraversal":
+ // Shenandoah generates normal object graphs for
+ // volatile stores
+ matches = new String[] {
+ "membar_release \\(elided\\)",
+ useCompressedOops ? "stlrw?" : "stlr",
+ "membar_volatile \\(elided\\)",
+ "ret"
+ };
+ break;
}
} else {
switch (testType) {
default:
// this is the basic sequence of instructions
*** 416,425 ****
--- 442,465 ----
"membar_volatile",
"dmb ish",
"ret"
};
break;
+
+ case "Shenandoah":
+ case "ShenandoahTraversal":
+ // Shenandoah generates normal object graphs for
+ // volatile stores
+ matches = new String[] {
+ "membar_release",
+ "dmb ish",
+ useCompressedOops ? "strw?" : "str",
+ "membar_volatile",
+ "dmb ish",
+ "ret"
+ };
+ break;
}
}
checkCompile(iter, "testObj", matches, output, true);
}
*** 518,527 ****
--- 558,578 ----
"strb",
"membar_acquire \\(elided\\)",
"ret"
};
break;
+ case "Shenandoah":
+ case "ShenandoahTraversal":
+ // For volatile CAS, Shenanodoah generates normal
+ // graphs with a shenandoah-specific cmpxchg
+ matches = new String[] {
+ "membar_release \\(elided\\)",
+ useCompressedOops ? "cmpxchgw?_acq_shenandoah" : "cmpxchg_acq_shenandoah",
+ "membar_acquire \\(elided\\)",
+ "ret"
+ };
+ break;
}
} else {
switch (testType) {
default:
// this is the basic sequence of instructions
*** 581,590 ****
--- 632,654 ----
"membar_acquire",
"dmb ish",
"ret"
};
break;
+ case "Shenandoah":
+ case "ShenandoahTraversal":
+ // For volatile CAS, Shenanodoah generates normal
+ // graphs with a shenandoah-specific cmpxchg
+ matches = new String[] {
+ "membar_release",
+ "dmb ish",
+ useCompressedOops ? "cmpxchgw?_shenandoah" : "cmpxchg_shenandoah",
+ "membar_acquire",
+ "dmb ish",
+ "ret"
+ };
+ break;
}
}
checkCompile(iter, "testObj", matches, output, true);
}
*** 699,708 ****
--- 763,783 ----
"strb",
"membar_acquire \\(elided\\)",
"ret"
};
break;
+ case "Shenandoah":
+ case "ShenandoahTraversal":
+ // For volatile CAS, Shenanodoah generates normal
+ // graphs with a shenandoah-specific cmpxchg
+ matches = new String[] {
+ "membar_release \\(elided\\)",
+ useCompressedOops ? "cmpxchgw?_acq_shenandoah" : "cmpxchg_acq_shenandoah",
+ "membar_acquire \\(elided\\)",
+ "ret"
+ };
+ break;
}
} else {
switch (testType) {
default:
// this is the basic sequence of instructions
*** 762,771 ****
--- 837,859 ----
"membar_acquire",
"dmb ish",
"ret"
};
break;
+ case "Shenandoah":
+ case "ShenandoahTraversal":
+ // For volatile CAS, Shenanodoah generates normal
+ // graphs with a shenandoah-specific cmpxchg
+ matches = new String[] {
+ "membar_release",
+ "dmb ish",
+ useCompressedOops ? "cmpxchgw?_shenandoah" : "cmpxchg_shenandoah",
+ "membar_acquire",
+ "dmb ish",
+ "ret"
+ };
+ break;
}
}
checkCompile(iter, "testObj", matches, output, true);
}
*** 860,869 ****
--- 948,966 ----
"strb",
"membar_acquire \\(elided\\)",
"ret"
};
break;
+ case "Shenandoah":
+ case "ShenandoahTraversal":
+ matches = new String[] {
+ "membar_release \\(elided\\)",
+ useCompressedOops ? "atomic_xchgw?_acq" : "atomic_xchg_acq",
+ "membar_acquire \\(elided\\)",
+ "ret"
+ };
+ break;
}
} else {
switch (testType) {
default:
// this is the basic sequence of instructions
*** 923,932 ****
--- 1020,1040 ----
"membar_acquire",
"dmb ish",
"ret"
};
break;
+ case "Shenandoah":
+ case "ShenandoahTraversal":
+ matches = new String[] {
+ "membar_release",
+ "dmb ish",
+ useCompressedOops ? "atomic_xchgw? " : "atomic_xchg ",
+ "membar_acquire",
+ "dmb ish",
+ "ret"
+ };
+ break;
}
}
checkCompile(iter, "testObj", matches, output, true);
}
< prev index next >