< prev index next >

test/hotspot/jtreg/compiler/c2/aarch64/TestVolatiles.java

Print this page

        

@@ -34,11 +34,13 @@
  *                       TestUnsafeVolatileCAS}
  * and <testtype> in {G1,
  *                    CMS,
  *                    CMSCondMark,
  *                    Serial,
- *                    Parallel}
+ *                    Parallel,
+ *                    Shenandoah,
+ *                    ShenandoahTraversal}
  */
 
 
 package compiler.c2.aarch64;
 

@@ -92,10 +94,22 @@
             argcount = 9 ;
             procArgs = new String[argcount];
             procArgs[argcount - 3] = "-XX:+UseConcMarkSweepGC";
             procArgs[argcount - 2] = "-XX:+UseCondCardMark";
             break;
+        case "Shenandoah":
+            argcount = 8;
+            procArgs = new String[argcount];
+            procArgs[argcount - 2] = "-XX:+UseShenandoahGC";
+            break;
+        case "ShenandoahTraversal":
+            argcount = 10;
+            procArgs = new String[argcount];
+            procArgs[argcount - 4] = "-XX:+UseShenandoahGC";
+            procArgs[argcount - 3] = "-XX:+UnlockExperimentalVMOptions";
+            procArgs[argcount - 2] = "-XX:ShenandoahGCHeuristics=traversal";
+            break;
         default:
             throw new RuntimeException("unexpected test type " + testType);
         }
 
         // fill in arguments common to all cases

@@ -315,10 +329,21 @@
                     "strb",
                     "membar_volatile (elided)",
                     "ret"
                 };
                 break;
+            case "Shenandoah":
+            case "ShenandoahTraversal":
+                 // Shenandoah generates normal object graphs for
+                 // volatile stores
+                matches = new String[] {
+                    "membar_release (elided)",
+                    "stlrw",
+                    "membar_volatile (elided)",
+                    "ret"
+                };
+                break;
             }
         } else {
             switch (testType) {
             default:
                 // this is the basic sequence of instructions

@@ -378,10 +403,24 @@
                     "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",
+                    "strw",
+                    "membar_volatile",
+                    "dmb ish",
+                    "ret"
+                };
+                break;
             }
         }
 
         checkCompile(iter, "testObj", matches, output);
     }

@@ -472,10 +511,21 @@
                     "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)",
+                    "cmpxchgw_acq_shenandoah",
+                    "membar_acquire (elided)",
+                    "ret"
+                };
+                break;
             }
         } else {
             switch (testType) {
             default:
                 // this is the basic sequence of instructions

@@ -535,10 +585,23 @@
                     "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",
+                    "cmpxchgw_shenandoah",
+                    "membar_acquire",
+                    "dmb ish",
+                    "ret"
+                };
+                break;
             }
         }
 
         checkCompile(iter, "testObj", matches, output);
     }
< prev index next >