File tree Expand file tree Collapse file tree 2 files changed +23
-0
lines changed
test/hotspot/jtreg/compiler/intrinsics/unsafe Expand file tree Collapse file tree 2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -1700,6 +1700,14 @@ void PhaseChaitin::fixup_spills() {
17001700 if ( cisc->oper_input_base () > 1 && mach->oper_input_base () <= 1 ) {
17011701 assert ( cisc->oper_input_base () == 2 , " Only adding one edge" );
17021702 cisc->ins_req (1 ,src); // Requires a memory edge
1703+ } else {
1704+ // There is no space reserved for a memory edge before the inputs for
1705+ // instructions which have "stackSlotX" parameter instead of "memory".
1706+ // For example, "MoveF2I_stack_reg". We always need a memory edge from
1707+ // src to cisc, else we might schedule cisc before src, loading from a
1708+ // spill location before storing the spill.
1709+ assert (cisc->memory_operand () == nullptr , " no memory operand, only stack" );
1710+ cisc->add_prec (src);
17031711 }
17041712 block->map_node (cisc, j); // Insert into basic block
17051713 n->subsume_by (cisc, C); // Correct graph
Original file line number Diff line number Diff line change 3535 * HeapByteBufferTest
3636 */
3737
38+ /**
39+ * @test
40+ * @bug 8282555
41+ * @summary intermittent, check that spilling MoveF2I etc produce memory edge
42+ * @modules java.base/jdk.internal.misc
43+ * @library /test/lib
44+ *
45+ * @run main/othervm -Djdk.test.lib.random.seed=42
46+ * -XX:+UnlockDiagnosticVMOptions -XX:+StressGCM -XX:+OptoScheduling
47+ * HeapByteBufferTest
48+ * @run main/othervm
49+ * -XX:+UnlockDiagnosticVMOptions -XX:+StressGCM -XX:+OptoScheduling
50+ * HeapByteBufferTest
51+ */
52+
3853public class HeapByteBufferTest extends ByteBufferTest {
3954
4055 public HeapByteBufferTest (long iterations , boolean direct ) {
You can’t perform that action at this time.
0 commit comments