changeset 193:031c8426433f

Migrate atomicity.primitives.* tests to annotation API.
author shade
date Wed, 13 Aug 2014 01:38:13 +0400
parents 083ada2e421f
children 26401d4e50a6
files tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_CharCanSeeMost.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_CharShouldSeeFull.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_DoubleCanSeeMost.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_DoubleShouldSeeFull.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_FloatCanSeeMost.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_FloatShouldSeeFull.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_IntCanSeeMost.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_IntShouldSeeFull.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_LongCanSeeMost.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_LongShouldSeeFull.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/BooleanFencedTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/ByteFencedTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/CharFencedTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/DoubleFencedTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/FloatFencedTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/IntFencedTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/LongFencedTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/ShortFencedTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/BooleanFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/ByteFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/CharFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/DoubleFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/FloatFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/IntFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/LongFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/ShortFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/BooleanInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/ByteInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/CharInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/DoubleInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/FloatInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/IntInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/LongInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/ShortInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/BooleanPlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/BytePlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/CharPlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/DoublePlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/FloatPlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/IntPlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/LongPlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/ShortPlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/BooleanVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/ByteVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/CharVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/DoubleVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/FloatVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/IntVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/LongVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/ShortVolatileTest.java tests-custom/src/main/resources/org/openjdk/jcstress/desc/initialization.xml
diffstat 51 files changed, 475 insertions(+), 437 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_CharCanSeeMost.java	Wed Aug 13 01:38:13 2014 +0400
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.init;
+
+import org.openjdk.jcstress.annotations.Expect;
+import org.openjdk.jcstress.annotations.Outcome;
+
+
+@Outcome(id = "[A]", expect = Expect.ACCEPTABLE, desc = "Seeing the default value for field. The update to the field in the constructor is lost. This is a legal JMM behavior")
+@Outcome(id = "[B]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(id = "[N]", expect = Expect.ACCEPTABLE, desc = "The observer sees the empty shell. This is a legal JMM behavior, since there is a race between actor and observer.")
+public class Grading_CharCanSeeMost {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_CharShouldSeeFull.java	Wed Aug 13 01:38:13 2014 +0400
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.init;
+
+import org.openjdk.jcstress.annotations.Expect;
+import org.openjdk.jcstress.annotations.Outcome;
+
+
+@Outcome(id = "[B]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(id = "[N]", expect = Expect.ACCEPTABLE, desc = "The observer sees the empty shell. This is a legal JMM behavior, since there is a race between actor and observer.")
+public class Grading_CharShouldSeeFull {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_DoubleCanSeeMost.java	Wed Aug 13 01:38:13 2014 +0400
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.init;
+
+import org.openjdk.jcstress.annotations.Expect;
+import org.openjdk.jcstress.annotations.Outcome;
+import org.openjdk.jcstress.annotations.Ref;
+
+
+@Outcome(id = "[0.0]",  expect = Expect.ACCEPTABLE, desc = "Seeing the default value for field. The update to the field in the constructor is lost. This is a legal JMM behavior")
+@Outcome(id = "[NaN]",  expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(id = "[42.0]", expect = Expect.ACCEPTABLE, desc = "The observer sees the empty shell. This is a legal JMM behavior, since there is a race between actor and observer.")
+@Outcome(               expect = Expect.ACCEPTABLE_SPEC, desc = "Seeing the torn value. This is specifically allowed by JLS. This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+public class Grading_DoubleCanSeeMost {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_DoubleShouldSeeFull.java	Wed Aug 13 01:38:13 2014 +0400
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.init;
+
+import org.openjdk.jcstress.annotations.Expect;
+import org.openjdk.jcstress.annotations.Outcome;
+import org.openjdk.jcstress.annotations.Ref;
+
+@Outcome(id = "[NaN]",  expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(id = "[42.0]", expect = Expect.ACCEPTABLE, desc = "The observer sees the empty shell. This is a legal JMM behavior, since there is a race between actor and observer.")
+@Outcome(               expect = Expect.ACCEPTABLE_SPEC, desc = "Seeing the torn value. This is specifically allowed by JLS. This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+public class Grading_DoubleShouldSeeFull {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_FloatCanSeeMost.java	Wed Aug 13 01:38:13 2014 +0400
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.init;
+
+import org.openjdk.jcstress.annotations.Expect;
+import org.openjdk.jcstress.annotations.Outcome;
+
+
+@Outcome(id = "[0.0]",  expect = Expect.ACCEPTABLE, desc = "Seeing the default value for field. The update to the field in the constructor is lost. This is a legal JMM behavior")
+@Outcome(id = "[NaN]",  expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(id = "[42.0]", expect = Expect.ACCEPTABLE, desc = "The observer sees the empty shell. This is a legal JMM behavior, since there is a race between actor and observer.")
+public class Grading_FloatCanSeeMost {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_FloatShouldSeeFull.java	Wed Aug 13 01:38:13 2014 +0400
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.init;
+
+import org.openjdk.jcstress.annotations.Expect;
+import org.openjdk.jcstress.annotations.Outcome;
+
+
+@Outcome(id = "[NaN]",  expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(id = "[42.0]", expect = Expect.ACCEPTABLE, desc = "The observer sees the empty shell. This is a legal JMM behavior, since there is a race between actor and observer.")
+public class Grading_FloatShouldSeeFull {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_IntCanSeeMost.java	Wed Aug 13 01:38:13 2014 +0400
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.init;
+
+import org.openjdk.jcstress.annotations.Expect;
+import org.openjdk.jcstress.annotations.Outcome;
+
+
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Seeing the default value for field. The update to the field in the constructor is lost. This is a legal JMM behavior")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(id = "[42]", expect = Expect.ACCEPTABLE, desc = "The observer sees the empty shell. This is a legal JMM behavior, since there is a race between actor and observer.")
+public class Grading_IntCanSeeMost {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_IntShouldSeeFull.java	Wed Aug 13 01:38:13 2014 +0400
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.init;
+
+import org.openjdk.jcstress.annotations.Expect;
+import org.openjdk.jcstress.annotations.Outcome;
+
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(id = "[42]", expect = Expect.ACCEPTABLE, desc = "The observer sees the empty shell. This is a legal JMM behavior, since there is a race between actor and observer.")
+public class Grading_IntShouldSeeFull {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_LongCanSeeMost.java	Wed Aug 13 01:38:13 2014 +0400
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.init;
+
+import org.openjdk.jcstress.annotations.Expect;
+import org.openjdk.jcstress.annotations.Outcome;
+import org.openjdk.jcstress.annotations.Ref;
+
+
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Seeing the default value for field. The update to the field in the constructor is lost. This is a legal JMM behavior")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(id = "[42]", expect = Expect.ACCEPTABLE, desc = "The observer sees the empty shell. This is a legal JMM behavior, since there is a race between actor and observer.")
+@Outcome(             expect = Expect.ACCEPTABLE_SPEC, desc = "Seeing the torn value. This is specifically allowed by JLS. This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+public class Grading_LongCanSeeMost {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/Grading_LongShouldSeeFull.java	Wed Aug 13 01:38:13 2014 +0400
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.init;
+
+import org.openjdk.jcstress.annotations.Expect;
+import org.openjdk.jcstress.annotations.Outcome;
+import org.openjdk.jcstress.annotations.Ref;
+
+
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(id = "[42]", expect = Expect.ACCEPTABLE, desc = "The observer sees the empty shell. This is a legal JMM behavior, since there is a race between actor and observer.")
+@Outcome(             expect = Expect.ACCEPTABLE_SPEC, desc = "Seeing the torn value. This is specifically allowed by JLS. This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+public class Grading_LongShouldSeeFull {
+}
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/BooleanFencedTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/BooleanFencedTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,12 +25,15 @@
 package org.openjdk.jcstress.tests.init.primitives.fenced;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntShouldSeeFull;
 import org.openjdk.jcstress.util.UnsafeHolder;
 
 @JCStressTest
+@JCStressMeta(Grading_IntShouldSeeFull.class)
 @State
 public class BooleanFencedTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/ByteFencedTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/ByteFencedTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,12 +25,15 @@
 package org.openjdk.jcstress.tests.init.primitives.fenced;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.ByteResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntShouldSeeFull;
 import org.openjdk.jcstress.util.UnsafeHolder;
 
 @JCStressTest
+@JCStressMeta(Grading_IntShouldSeeFull.class)
 @State
 public class ByteFencedTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/CharFencedTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/CharFencedTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,12 +25,15 @@
 package org.openjdk.jcstress.tests.init.primitives.fenced;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.CharResult1;
+import org.openjdk.jcstress.tests.init.Grading_CharShouldSeeFull;
 import org.openjdk.jcstress.util.UnsafeHolder;
 
 @JCStressTest
+@JCStressMeta(Grading_CharShouldSeeFull.class)
 @State
 public class CharFencedTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/DoubleFencedTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/DoubleFencedTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,12 +25,15 @@
 package org.openjdk.jcstress.tests.init.primitives.fenced;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.DoubleResult1;
+import org.openjdk.jcstress.tests.init.Grading_DoubleShouldSeeFull;
 import org.openjdk.jcstress.util.UnsafeHolder;
 
 @JCStressTest
+@JCStressMeta(Grading_DoubleShouldSeeFull.class)
 @State
 public class DoubleFencedTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/FloatFencedTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/FloatFencedTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,12 +25,15 @@
 package org.openjdk.jcstress.tests.init.primitives.fenced;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.FloatResult1;
+import org.openjdk.jcstress.tests.init.Grading_FloatShouldSeeFull;
 import org.openjdk.jcstress.util.UnsafeHolder;
 
 @JCStressTest
+@JCStressMeta(Grading_FloatShouldSeeFull.class)
 @State
 public class FloatFencedTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/IntFencedTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/IntFencedTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,12 +25,15 @@
 package org.openjdk.jcstress.tests.init.primitives.fenced;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntShouldSeeFull;
 import org.openjdk.jcstress.util.UnsafeHolder;
 
 @JCStressTest
+@JCStressMeta(Grading_IntShouldSeeFull.class)
 @State
 public class IntFencedTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/LongFencedTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/LongFencedTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,12 +25,15 @@
 package org.openjdk.jcstress.tests.init.primitives.fenced;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.LongResult1;
+import org.openjdk.jcstress.tests.init.Grading_LongShouldSeeFull;
 import org.openjdk.jcstress.util.UnsafeHolder;
 
 @JCStressTest
+@JCStressMeta(Grading_LongShouldSeeFull.class)
 @State
 public class LongFencedTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/ShortFencedTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/fenced/ShortFencedTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,12 +25,15 @@
 package org.openjdk.jcstress.tests.init.primitives.fenced;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.ShortResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntShouldSeeFull;
 import org.openjdk.jcstress.util.UnsafeHolder;
 
 @JCStressTest
+@JCStressMeta(Grading_IntShouldSeeFull.class)
 @State
 public class ShortFencedTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/BooleanFinalTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/BooleanFinalTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.finals;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntShouldSeeFull;
 
 @JCStressTest
+@JCStressMeta(Grading_IntShouldSeeFull.class)
 @State
 public class BooleanFinalTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/ByteFinalTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/ByteFinalTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.finals;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.ByteResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntShouldSeeFull;
 
 @JCStressTest
+@JCStressMeta(Grading_IntShouldSeeFull.class)
 @State
 public class ByteFinalTest{
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/CharFinalTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/CharFinalTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.finals;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.CharResult1;
+import org.openjdk.jcstress.tests.init.Grading_CharShouldSeeFull;
 
 @JCStressTest
+@JCStressMeta(Grading_CharShouldSeeFull.class)
 @State
 public class CharFinalTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/DoubleFinalTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/DoubleFinalTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.finals;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.DoubleResult1;
+import org.openjdk.jcstress.tests.init.Grading_DoubleShouldSeeFull;
 
 @JCStressTest
+@JCStressMeta(Grading_DoubleShouldSeeFull.class)
 @State
 public class DoubleFinalTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/FloatFinalTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/FloatFinalTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.finals;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.FloatResult1;
+import org.openjdk.jcstress.tests.init.Grading_FloatShouldSeeFull;
 
 @JCStressTest
+@JCStressMeta(Grading_FloatShouldSeeFull.class)
 @State
 public class FloatFinalTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/IntFinalTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/IntFinalTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.finals;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntShouldSeeFull;
 
 @JCStressTest
+@JCStressMeta(Grading_IntShouldSeeFull.class)
 @State
 public class IntFinalTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/LongFinalTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/LongFinalTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.finals;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.LongResult1;
+import org.openjdk.jcstress.tests.init.Grading_LongShouldSeeFull;
 
 @JCStressTest
+@JCStressMeta(Grading_LongShouldSeeFull.class)
 @State
 public class LongFinalTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/ShortFinalTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/ShortFinalTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.finals;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.ShortResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntShouldSeeFull;
 
 @JCStressTest
+@JCStressMeta(Grading_IntShouldSeeFull.class)
 @State
 public class ShortFinalTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/BooleanInstanceInitializerTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/BooleanInstanceInitializerTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.instance;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_IntCanSeeMost.class)
 @State
 public class BooleanInstanceInitializerTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/ByteInstanceInitializerTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/ByteInstanceInitializerTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.instance;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.ByteResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_IntCanSeeMost.class)
 @State
 public class ByteInstanceInitializerTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/CharInstanceInitializerTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/CharInstanceInitializerTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.instance;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.CharResult1;
+import org.openjdk.jcstress.tests.init.Grading_CharCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_CharCanSeeMost.class)
 @State
 public class CharInstanceInitializerTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/DoubleInstanceInitializerTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/DoubleInstanceInitializerTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.instance;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.DoubleResult1;
+import org.openjdk.jcstress.tests.init.Grading_DoubleCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_DoubleCanSeeMost.class)
 @State
 public class DoubleInstanceInitializerTest  {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/FloatInstanceInitializerTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/FloatInstanceInitializerTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.instance;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.FloatResult1;
+import org.openjdk.jcstress.tests.init.Grading_FloatCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_FloatCanSeeMost.class)
 @State
 public class FloatInstanceInitializerTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/IntInstanceInitializerTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/IntInstanceInitializerTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.instance;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_IntCanSeeMost.class)
 @State
 public class IntInstanceInitializerTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/LongInstanceInitializerTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/LongInstanceInitializerTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.instance;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.LongResult1;
+import org.openjdk.jcstress.tests.init.Grading_LongCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_LongCanSeeMost.class)
 @State
 public class LongInstanceInitializerTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/ShortInstanceInitializerTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/ShortInstanceInitializerTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.instance;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.ShortResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_IntCanSeeMost.class)
 @State
 public class ShortInstanceInitializerTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/BooleanPlainTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/BooleanPlainTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.plain;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_IntCanSeeMost.class)
 @State
 public class BooleanPlainTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/BytePlainTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/BytePlainTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.plain;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.ByteResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_IntCanSeeMost.class)
 @State
 public class BytePlainTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/CharPlainTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/CharPlainTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.plain;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.CharResult1;
+import org.openjdk.jcstress.tests.init.Grading_CharCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_CharCanSeeMost.class)
 @State
 public class CharPlainTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/DoublePlainTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/DoublePlainTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.plain;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.DoubleResult1;
+import org.openjdk.jcstress.tests.init.Grading_DoubleCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_DoubleCanSeeMost.class)
 @State
 public class DoublePlainTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/FloatPlainTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/FloatPlainTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.plain;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.FloatResult1;
+import org.openjdk.jcstress.tests.init.Grading_FloatCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_FloatCanSeeMost.class)
 @State
 public class FloatPlainTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/IntPlainTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/IntPlainTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.plain;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_IntCanSeeMost.class)
 @State
 public class IntPlainTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/LongPlainTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/LongPlainTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.plain;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.LongResult1;
+import org.openjdk.jcstress.tests.init.Grading_LongCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_LongCanSeeMost.class)
 @State
 public class LongPlainTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/ShortPlainTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/ShortPlainTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.plain;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.ShortResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_IntCanSeeMost.class)
 @State
 public class ShortPlainTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/BooleanVolatileTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/BooleanVolatileTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.volatiles;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_IntCanSeeMost.class)
 @State
 public class BooleanVolatileTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/ByteVolatileTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/ByteVolatileTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.volatiles;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.ByteResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_IntCanSeeMost.class)
 @State
 public class ByteVolatileTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/CharVolatileTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/CharVolatileTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.volatiles;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.CharResult1;
+import org.openjdk.jcstress.tests.init.Grading_CharCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_CharCanSeeMost.class)
 @State
 public class CharVolatileTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/DoubleVolatileTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/DoubleVolatileTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.volatiles;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.DoubleResult1;
+import org.openjdk.jcstress.tests.init.Grading_DoubleCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_DoubleCanSeeMost.class)
 @State
 public class DoubleVolatileTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/FloatVolatileTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/FloatVolatileTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.volatiles;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.FloatResult1;
+import org.openjdk.jcstress.tests.init.Grading_FloatCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_FloatCanSeeMost.class)
 @State
 public class FloatVolatileTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/IntVolatileTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/IntVolatileTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.volatiles;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.IntResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_IntCanSeeMost.class)
 @State
 public class IntVolatileTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/LongVolatileTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/LongVolatileTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.volatiles;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.LongResult1;
+import org.openjdk.jcstress.tests.init.Grading_LongCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_LongCanSeeMost.class)
 @State
 public class LongVolatileTest {
 
--- a/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/ShortVolatileTest.java	Wed Aug 13 01:19:07 2014 +0400
+++ b/tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/ShortVolatileTest.java	Wed Aug 13 01:38:13 2014 +0400
@@ -25,11 +25,14 @@
 package org.openjdk.jcstress.tests.init.primitives.volatiles;
 
 import org.openjdk.jcstress.annotations.Actor;
+import org.openjdk.jcstress.annotations.JCStressMeta;
 import org.openjdk.jcstress.annotations.JCStressTest;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.infra.results.ShortResult1;
+import org.openjdk.jcstress.tests.init.Grading_IntCanSeeMost;
 
 @JCStressTest
+@JCStressMeta(Grading_IntCanSeeMost.class)
 @State
 public class ShortVolatileTest {
 
--- a/tests-custom/src/main/resources/org/openjdk/jcstress/desc/initialization.xml	Wed Aug 13 01:19:07 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,437 +0,0 @@
-<!--
-
-    Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
-    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-
-    This code is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License version 2 only, as
-    published by the Free Software Foundation.  Oracle designates this
-    particular file as subject to the "Classpath" exception as provided
-    by Oracle in the LICENSE file that accompanied this code.
-
-    This code is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-    version 2 for more details (a copy is included in the LICENSE file that
-    accompanied this code).
-
-    You should have received a copy of the GNU General Public License version
-    2 along with this work; if not, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-
-    Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-    or visit www.oracle.com if you need additional information or have any
-    questions.
-
--->
-<testsuite>
-
-    <template name="int_canSeeMost">
-        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>
-        <description>
-            Tests what other threads can see for just-initialized values. This test allows to see anything, except out-of-thin-air values.
-        </description>
-        <case>
-            <match>[0]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                Seeing the default value for field. The update to the field in the constructor is lost.
-                This is a legal JMM behavior.
-            </description>
-        </case>
-        <case>
-            <match>[-1]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The value set by the actor thread. Observer sees the complete update.
-            </description>
-        </case>
-        <case>
-            <match>[42]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The observer sees the empty shell.
-                This is a legal JMM behavior, since there is a race between actor and observer.
-            </description>
-        </case>
-        <unmatched>
-            <expect>FORBIDDEN</expect>
-            <description>
-                Other values are illegal.
-            </description>
-        </unmatched>
-    </template>
-
-    <template name="long_canSeeMost">
-        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>
-        <description>
-            Tests what other threads can see for just-initialized values. This test allows to see anything including torn values.
-        </description>
-        <case>
-            <match>[0]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                Seeing the default value for the field. The update to the field in the constructor is lost.
-                This is a legal JMM behavior.
-            </description>
-        </case>
-        <case>
-            <match>[-1]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The value set by the actor thread. Observer sees the complete update.
-            </description>
-        </case>
-        <case>
-            <match>[42]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The observer sees the empty shell.
-                This is a legal JMM behavior, since there is a race between actor and observer.
-            </description>
-        </case>
-        <unmatched>
-            <expect>ACCEPTABLE_SPEC</expect>
-            <description>
-                Seeing the torn value. This is specifically allowed by JLS.
-                This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.
-            </description>
-            <refs>
-                <url>http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7</url>
-            </refs>
-        </unmatched>
-    </template>
-
-    <template name="float_canSeeMost">
-        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>
-        <description>
-            Tests what other threads can see for just-initialized values. This test allows to see anything, except out-of-thin-air values.
-        </description>
-        <case>
-            <match>[0.0]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                Seeing the default value for long field. The update to the field in the constructor is lost.
-                This is a legal JMM behavior.
-            </description>
-        </case>
-        <case>
-            <match>[NaN]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The value set by the actor thread. Observer sees the complete update.
-            </description>
-        </case>
-        <case>
-            <match>[42.0]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The observer sees the empty shell.
-                This is a legal JMM behavior, since there is a race between actor and observer.
-            </description>
-        </case>
-        <unmatched>
-            <expect>FORBIDDEN</expect>
-            <description>
-                Other values are forbidden.
-            </description>
-        </unmatched>
-    </template>
-
-    <template name="char_canSeeMost">
-        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>
-        <description>
-            Tests what other threads can see for just-initialized values. This test allows to see anything, except out-of-thin-air values.
-        </description>
-        <case>
-            <match>[A]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                Seeing the default value for field. The update to the field in the constructor is lost.
-                This is a legal JMM behavior.
-            </description>
-        </case>
-        <case>
-            <match>[B]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The value set by the actor thread. Observer sees the complete update.
-            </description>
-        </case>
-        <case>
-            <match>[N]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The observer sees the empty shell.
-                This is a legal JMM behavior, since there is a race between actor and observer.
-            </description>
-        </case>
-        <unmatched>
-            <expect>FORBIDDEN</expect>
-            <description>
-                Other values are forbidden.
-            </description>
-        </unmatched>
-    </template>
-
-    <template name="double_canSeeMost">
-        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>
-        <description>
-            Tests what other threads can see for just-initialized values. This test allows to see anything including torn values.
-        </description>
-        <case>
-            <match>[0.0]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                Seeing the default value for field. The update to the field in the constructor is lost.
-                This is a legal JMM behavior.
-            </description>
-        </case>
-        <case>
-            <match>[NaN]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The value set by the actor thread. Observer sees the complete update.
-            </description>
-        </case>
-        <case>
-            <match>[42.0]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The observer sees the empty shell.
-                This is a legal JMM behavior, since there is a race between actor and observer.
-            </description>
-        </case>
-        <unmatched>
-            <expect>ACCEPTABLE_SPEC</expect>
-            <description>
-                Seeing the torn value. This is specifically allowed by JLS.
-                This is not a surprising behavior on some 32-bit systems which do not have full-width 64-bit instructions.
-            </description>
-            <refs>
-                <url>http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7</url>
-            </refs>
-        </unmatched>
-    </template>
-
-    <template name="int_canSeeDefault">
-        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>
-        <case>
-            <match>[0]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                Seeing the default value for long field. The update to the field in the constructor is lost.
-                This is a legal JMM behavior.
-            </description>
-        </case>
-        <case>
-            <match>[-1]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The value set by the actor thread. Observer sees the complete update.
-            </description>
-        </case>
-        <case>
-            <match>[42]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The observer sees the empty shell.
-                This is a legal JMM behavior, since there is a race between actor and observer.
-            </description>
-        </case>
-        <unmatched>
-            <expect>FORBIDDEN</expect>
-            <description>
-                Forbidden to see either default value.
-            </description>
-        </unmatched>
-    </template>
-
-    <template name="char_canSeeDefault">
-        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>
-        <case>
-            <match>[A]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                Seeing the default value for long field. The update to the field in the constructor is lost.
-                This is a legal JMM behavior.
-            </description>
-        </case>
-        <case>
-            <match>[B]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The value set by the actor thread. Observer sees the complete update.
-            </description>
-        </case>
-        <case>
-            <match>[N]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The observer sees the empty shell.
-                This is a legal JMM behavior, since there is a race between actor and observer.
-            </description>
-        </case>
-        <unmatched>
-            <expect>FORBIDDEN</expect>
-            <description>
-                Forbidden to see either default value.
-            </description>
-        </unmatched>
-    </template>
-
-    <template name="float_canSeeDefault">
-        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>
-        <case>
-            <match>[0.0]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                Seeing the default value for long field. The update to the field in the constructor is lost.
-                This is a legal JMM behavior.
-            </description>
-        </case>
-        <case>
-            <match>[NaN]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The value set by the actor thread. Observer sees the complete update.
-            </description>
-        </case>
-        <case>
-            <match>[42.0]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The observer sees the empty shell.
-                This is a legal JMM behavior, since there is a race between actor and observer.
-            </description>
-        </case>
-        <unmatched>
-            <expect>FORBIDDEN</expect>
-            <description>
-                Forbidden to see either default value.
-            </description>
-        </unmatched>
-    </template>
-
-    <template name="int_shouldSeeFull">
-        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>
-        <case>
-            <match>[-1]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The value set by the actor thread. Observer sees the complete update.
-            </description>
-        </case>
-        <case>
-            <match>[42]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The observer sees the empty shell.
-                This is a legal JMM behavior, since there is a race between actor and observer.
-            </description>
-        </case>
-        <unmatched>
-            <expect>FORBIDDEN</expect>
-            <description>
-                Forbidden to see other values.
-            </description>
-        </unmatched>
-    </template>
-
-    <template name="char_shouldSeeFull">
-        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>
-        <case>
-            <match>[B]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The value set by the actor thread. Observer sees the complete update.
-            </description>
-        </case>
-        <case>
-            <match>[N]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The observer sees the empty shell.
-                This is a legal JMM behavior, since there is a race between actor and observer.
-            </description>
-        </case>
-        <unmatched>
-            <expect>FORBIDDEN</expect>
-            <description>
-                Forbidden to see other values.
-            </description>
-        </unmatched>
-    </template>
-
-    <template name="float_shouldSeeFull">
-        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>
-        <case>
-            <match>[NaN]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The value set by the actor thread. Observer sees the complete update.
-            </description>
-        </case>
-        <case>
-            <match>[42.0]</match>
-            <expect>ACCEPTABLE</expect>
-            <description>
-                The observer sees the empty shell.
-                This is a legal JMM behavior, since there is a race between actor and observer.
-            </description>
-        </case>
-        <unmatched>
-            <expect>FORBIDDEN</expect>
-            <description>
-                Forbidden to see other values.
-            </description>
-        </unmatched>
-    </template>
-
-
-    <test name="org.openjdk.jcstress.tests.init.primitives.plain.BooleanPlainTest"    template="int_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.plain.BytePlainTest"       template="int_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.plain.ShortPlainTest"      template="int_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.plain.IntPlainTest"        template="int_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.plain.LongPlainTest"       template="long_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.plain.CharPlainTest"       template="char_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.plain.FloatPlainTest"      template="float_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.plain.DoublePlainTest"     template="double_canSeeMost" />
-
-    <test name="org.openjdk.jcstress.tests.init.primitives.instance.BooleanInstanceInitializerTest"   template="int_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.instance.ByteInstanceInitializerTest"      template="int_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.instance.ShortInstanceInitializerTest"     template="int_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.instance.IntInstanceInitializerTest"       template="int_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.instance.LongInstanceInitializerTest"      template="long_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.instance.CharInstanceInitializerTest"      template="char_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.instance.DoubleInstanceInitializerTest"    template="float_canSeeMost" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.instance.FloatInstanceInitializerTest"     template="double_canSeeMost" />
-
-    <test name="org.openjdk.jcstress.tests.init.primitives.volatiles.BooleanVolatileTest"   template="int_canSeeDefault" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.volatiles.ByteVolatileTest"      template="int_canSeeDefault" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.volatiles.ShortVolatileTest"     template="int_canSeeDefault" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.volatiles.IntVolatileTest"       template="int_canSeeDefault" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.volatiles.LongVolatileTest"      template="int_canSeeDefault" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.volatiles.CharVolatileTest"      template="char_canSeeDefault" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.volatiles.DoubleVolatileTest"    template="float_canSeeDefault" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.volatiles.FloatVolatileTest"     template="float_canSeeDefault" />
-
-    <test name="org.openjdk.jcstress.tests.init.primitives.finals.BooleanFinalTest"   template="int_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.finals.ByteFinalTest"      template="int_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.finals.ShortFinalTest"     template="int_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.finals.IntFinalTest"       template="int_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.finals.LongFinalTest"      template="int_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.finals.CharFinalTest"      template="char_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.finals.DoubleFinalTest"    template="float_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.finals.FloatFinalTest"     template="float_shouldSeeFull" />
-
-    <test name="org.openjdk.jcstress.tests.init.primitives.fenced.BooleanFencedTest"    template="int_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.fenced.ByteFencedTest"      template="int_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.fenced.ShortFencedTest"     template="int_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.fenced.IntFencedTest"       template="int_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.fenced.LongFencedTest"      template="int_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.fenced.CharFencedTest"      template="char_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.fenced.DoubleFencedTest"    template="float_shouldSeeFull" />
-    <test name="org.openjdk.jcstress.tests.init.primitives.fenced.FloatFencedTest"     template="float_shouldSeeFull" />
-
-</testsuite>