changeset 71:3f2823789f2f

Rename core modules to "jcstress-*".
author shade
date Fri, 24 Jan 2014 21:34:38 +0400
parents ecfe9e112bc6
children c0c94345c955
files generator/pom.xml generator/src/main/java/org/openjdk/jcstress/TestGenMain.java generator/src/main/java/org/openjdk/jcstress/TraceGenMain.java generator/src/main/java/org/openjdk/jcstress/generator/AcqType.java generator/src/main/java/org/openjdk/jcstress/generator/Atomic_Updater_X.java generator/src/main/java/org/openjdk/jcstress/generator/Atomic_X.java generator/src/main/java/org/openjdk/jcstress/generator/Primitive.java generator/src/main/java/org/openjdk/jcstress/generator/RelType.java generator/src/main/java/org/openjdk/jcstress/generator/ResultGenerator.java generator/src/main/java/org/openjdk/jcstress/generator/SynchronizedBlock.java generator/src/main/java/org/openjdk/jcstress/generator/TestGenerator.java generator/src/main/java/org/openjdk/jcstress/generator/Utils.java generator/src/main/java/org/openjdk/jcstress/generator/VolatileReadWrite.java generator/src/main/java/org/openjdk/jcstress/tracer/Op.java generator/src/main/java/org/openjdk/jcstress/tracer/TraceGen.java harness/pom.xml harness/src/main/java/org/openjdk/jcstress/ForkedMain.java harness/src/main/java/org/openjdk/jcstress/JCStress.java harness/src/main/java/org/openjdk/jcstress/Main.java harness/src/main/java/org/openjdk/jcstress/Options.java harness/src/main/java/org/openjdk/jcstress/infra/EndResult.java harness/src/main/java/org/openjdk/jcstress/infra/Result.java harness/src/main/java/org/openjdk/jcstress/infra/Scheduler.java harness/src/main/java/org/openjdk/jcstress/infra/State.java harness/src/main/java/org/openjdk/jcstress/infra/Status.java harness/src/main/java/org/openjdk/jcstress/infra/collectors/DiskReadCollector.java harness/src/main/java/org/openjdk/jcstress/infra/collectors/DiskWriteCollector.java harness/src/main/java/org/openjdk/jcstress/infra/collectors/InProcessCollector.java harness/src/main/java/org/openjdk/jcstress/infra/collectors/MuxCollector.java harness/src/main/java/org/openjdk/jcstress/infra/collectors/NetworkInputCollector.java harness/src/main/java/org/openjdk/jcstress/infra/collectors/NetworkOutputCollector.java harness/src/main/java/org/openjdk/jcstress/infra/collectors/TestResult.java harness/src/main/java/org/openjdk/jcstress/infra/collectors/TestResultCollector.java harness/src/main/java/org/openjdk/jcstress/infra/grading/ConsoleReportPrinter.java harness/src/main/java/org/openjdk/jcstress/infra/grading/DescriptionReader.java harness/src/main/java/org/openjdk/jcstress/infra/grading/ExceptionReportPrinter.java harness/src/main/java/org/openjdk/jcstress/infra/grading/HTMLReportPrinter.java harness/src/main/java/org/openjdk/jcstress/infra/grading/TestGrading.java harness/src/main/java/org/openjdk/jcstress/infra/results/BooleanResult1.java harness/src/main/java/org/openjdk/jcstress/infra/results/BooleanResult2.java harness/src/main/java/org/openjdk/jcstress/infra/results/BooleanResult4.java harness/src/main/java/org/openjdk/jcstress/infra/results/ByteResult1.java harness/src/main/java/org/openjdk/jcstress/infra/results/ByteResult2.java harness/src/main/java/org/openjdk/jcstress/infra/results/ByteResult3.java harness/src/main/java/org/openjdk/jcstress/infra/results/ByteResult4.java harness/src/main/java/org/openjdk/jcstress/infra/results/ByteResult8.java harness/src/main/java/org/openjdk/jcstress/infra/results/CharResult1.java harness/src/main/java/org/openjdk/jcstress/infra/results/CharResult2.java harness/src/main/java/org/openjdk/jcstress/infra/results/CharResult4.java harness/src/main/java/org/openjdk/jcstress/infra/results/DoubleResult1.java harness/src/main/java/org/openjdk/jcstress/infra/results/DoubleResult2.java harness/src/main/java/org/openjdk/jcstress/infra/results/DoubleResult4.java harness/src/main/java/org/openjdk/jcstress/infra/results/FloatResult1.java harness/src/main/java/org/openjdk/jcstress/infra/results/FloatResult2.java harness/src/main/java/org/openjdk/jcstress/infra/results/FloatResult4.java harness/src/main/java/org/openjdk/jcstress/infra/results/IntResult1.java harness/src/main/java/org/openjdk/jcstress/infra/results/IntResult2.java harness/src/main/java/org/openjdk/jcstress/infra/results/IntResult3.java harness/src/main/java/org/openjdk/jcstress/infra/results/IntResult4.java harness/src/main/java/org/openjdk/jcstress/infra/results/IntResult8.java harness/src/main/java/org/openjdk/jcstress/infra/results/LongResult1.java harness/src/main/java/org/openjdk/jcstress/infra/results/LongResult2.java harness/src/main/java/org/openjdk/jcstress/infra/results/LongResult3.java harness/src/main/java/org/openjdk/jcstress/infra/results/LongResult4.java harness/src/main/java/org/openjdk/jcstress/infra/results/ShortResult1.java harness/src/main/java/org/openjdk/jcstress/infra/results/ShortResult2.java harness/src/main/java/org/openjdk/jcstress/infra/results/ShortResult4.java harness/src/main/java/org/openjdk/jcstress/infra/runners/Actor1_Runner.java harness/src/main/java/org/openjdk/jcstress/infra/runners/Actor2_Arbiter1_Runner.java harness/src/main/java/org/openjdk/jcstress/infra/runners/Actor2_Runner.java harness/src/main/java/org/openjdk/jcstress/infra/runners/Actor3_Runner.java harness/src/main/java/org/openjdk/jcstress/infra/runners/Actor4_Runner.java harness/src/main/java/org/openjdk/jcstress/infra/runners/ActorBase.java harness/src/main/java/org/openjdk/jcstress/infra/runners/ControlHolder.java harness/src/main/java/org/openjdk/jcstress/infra/runners/Runner.java harness/src/main/java/org/openjdk/jcstress/infra/runners/StateHolder.java harness/src/main/java/org/openjdk/jcstress/infra/runners/TerminationRunner.java harness/src/main/java/org/openjdk/jcstress/tests/Actor1_Test.java harness/src/main/java/org/openjdk/jcstress/tests/Actor2_Arbiter1_Test.java harness/src/main/java/org/openjdk/jcstress/tests/Actor2_Test.java harness/src/main/java/org/openjdk/jcstress/tests/Actor3_Test.java harness/src/main/java/org/openjdk/jcstress/tests/Actor4_Test.java harness/src/main/java/org/openjdk/jcstress/tests/ActorConcurrencyTest.java harness/src/main/java/org/openjdk/jcstress/tests/ConcurrencyTest.java harness/src/main/java/org/openjdk/jcstress/tests/TerminationTest.java harness/src/main/java/org/openjdk/jcstress/util/Bridges.java harness/src/main/java/org/openjdk/jcstress/util/CharArrayMultiSet.java harness/src/main/java/org/openjdk/jcstress/util/ContendedSupport.java harness/src/main/java/org/openjdk/jcstress/util/Counter.java harness/src/main/java/org/openjdk/jcstress/util/Counters.java harness/src/main/java/org/openjdk/jcstress/util/Environment.java harness/src/main/java/org/openjdk/jcstress/util/HashCounter.java harness/src/main/java/org/openjdk/jcstress/util/HashMultimap.java harness/src/main/java/org/openjdk/jcstress/util/HashMultiset.java harness/src/main/java/org/openjdk/jcstress/util/InputStreamDrainer.java harness/src/main/java/org/openjdk/jcstress/util/InterfaceListProcessor.java harness/src/main/java/org/openjdk/jcstress/util/LongHashMultiset.java harness/src/main/java/org/openjdk/jcstress/util/Multimap.java harness/src/main/java/org/openjdk/jcstress/util/Multiset.java harness/src/main/java/org/openjdk/jcstress/util/Multisets.java harness/src/main/java/org/openjdk/jcstress/util/MutableLong.java harness/src/main/java/org/openjdk/jcstress/util/NonNullArrayList.java harness/src/main/java/org/openjdk/jcstress/util/NullOutputStream.java harness/src/main/java/org/openjdk/jcstress/util/Reflections.java harness/src/main/java/org/openjdk/jcstress/util/TreeMultimap.java harness/src/main/java/org/openjdk/jcstress/util/TreesetMultimap.java harness/src/main/java/org/openjdk/jcstress/util/UnsafeHolder.java harness/src/main/java/org/openjdk/jcstress/util/VMSupport.java harness/src/main/java/sun/hotspot/WhiteBox.java harness/src/main/java/sun/hotspot/parser/DiagnosticCommand.java harness/src/main/java/sun/misc/Contended.java harness/src/main/java/sun/misc/Unsafe.java harness/src/main/resources/META-INF/services/javax.annotation.processing.Processor harness/src/main/resources/xsd/descriptions/test-descriptions.xsd harness/src/main/resources/xsd/results/test-result.xsd jcstress-core/pom.xml jcstress-core/src/main/java/org/openjdk/jcstress/ForkedMain.java jcstress-core/src/main/java/org/openjdk/jcstress/JCStress.java jcstress-core/src/main/java/org/openjdk/jcstress/Main.java jcstress-core/src/main/java/org/openjdk/jcstress/Options.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/EndResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/Result.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/Scheduler.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/State.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/Status.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/collectors/DiskReadCollector.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/collectors/DiskWriteCollector.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/collectors/InProcessCollector.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/collectors/MuxCollector.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/collectors/NetworkInputCollector.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/collectors/NetworkOutputCollector.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/collectors/TestResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/collectors/TestResultCollector.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/ConsoleReportPrinter.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/DescriptionReader.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/ExceptionReportPrinter.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/HTMLReportPrinter.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/grading/TestGrading.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/BooleanResult1.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/BooleanResult2.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/BooleanResult4.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/ByteResult1.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/ByteResult2.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/ByteResult3.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/ByteResult4.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/ByteResult8.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/CharResult1.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/CharResult2.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/CharResult4.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/DoubleResult1.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/DoubleResult2.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/DoubleResult4.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/FloatResult1.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/FloatResult2.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/FloatResult4.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/IntResult1.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/IntResult2.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/IntResult3.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/IntResult4.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/IntResult8.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/LongResult1.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/LongResult2.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/LongResult3.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/LongResult4.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/ShortResult1.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/ShortResult2.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/ShortResult4.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/Actor1_Runner.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/Actor2_Arbiter1_Runner.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/Actor2_Runner.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/Actor3_Runner.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/Actor4_Runner.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/ActorBase.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/ControlHolder.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/Runner.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/StateHolder.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/runners/TerminationRunner.java jcstress-core/src/main/java/org/openjdk/jcstress/tests/Actor1_Test.java jcstress-core/src/main/java/org/openjdk/jcstress/tests/Actor2_Arbiter1_Test.java jcstress-core/src/main/java/org/openjdk/jcstress/tests/Actor2_Test.java jcstress-core/src/main/java/org/openjdk/jcstress/tests/Actor3_Test.java jcstress-core/src/main/java/org/openjdk/jcstress/tests/Actor4_Test.java jcstress-core/src/main/java/org/openjdk/jcstress/tests/ActorConcurrencyTest.java jcstress-core/src/main/java/org/openjdk/jcstress/tests/ConcurrencyTest.java jcstress-core/src/main/java/org/openjdk/jcstress/tests/TerminationTest.java jcstress-core/src/main/java/org/openjdk/jcstress/util/Bridges.java jcstress-core/src/main/java/org/openjdk/jcstress/util/CharArrayMultiSet.java jcstress-core/src/main/java/org/openjdk/jcstress/util/ContendedSupport.java jcstress-core/src/main/java/org/openjdk/jcstress/util/Counter.java jcstress-core/src/main/java/org/openjdk/jcstress/util/Counters.java jcstress-core/src/main/java/org/openjdk/jcstress/util/Environment.java jcstress-core/src/main/java/org/openjdk/jcstress/util/HashCounter.java jcstress-core/src/main/java/org/openjdk/jcstress/util/HashMultimap.java jcstress-core/src/main/java/org/openjdk/jcstress/util/HashMultiset.java jcstress-core/src/main/java/org/openjdk/jcstress/util/InputStreamDrainer.java jcstress-core/src/main/java/org/openjdk/jcstress/util/InterfaceListProcessor.java jcstress-core/src/main/java/org/openjdk/jcstress/util/LongHashMultiset.java jcstress-core/src/main/java/org/openjdk/jcstress/util/Multimap.java jcstress-core/src/main/java/org/openjdk/jcstress/util/Multiset.java jcstress-core/src/main/java/org/openjdk/jcstress/util/Multisets.java jcstress-core/src/main/java/org/openjdk/jcstress/util/MutableLong.java jcstress-core/src/main/java/org/openjdk/jcstress/util/NonNullArrayList.java jcstress-core/src/main/java/org/openjdk/jcstress/util/NullOutputStream.java jcstress-core/src/main/java/org/openjdk/jcstress/util/Reflections.java jcstress-core/src/main/java/org/openjdk/jcstress/util/TreeMultimap.java jcstress-core/src/main/java/org/openjdk/jcstress/util/TreesetMultimap.java jcstress-core/src/main/java/org/openjdk/jcstress/util/UnsafeHolder.java jcstress-core/src/main/java/org/openjdk/jcstress/util/VMSupport.java jcstress-core/src/main/java/sun/hotspot/WhiteBox.java jcstress-core/src/main/java/sun/hotspot/parser/DiagnosticCommand.java jcstress-core/src/main/java/sun/misc/Contended.java jcstress-core/src/main/java/sun/misc/Unsafe.java jcstress-core/src/main/resources/META-INF/services/javax.annotation.processing.Processor jcstress-core/src/main/resources/xsd/descriptions/test-descriptions.xsd jcstress-core/src/main/resources/xsd/results/test-result.xsd jcstress-test-gen/pom.xml jcstress-test-gen/src/main/java/org/openjdk/jcstress/TestGenMain.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/TraceGenMain.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/generator/AcqType.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/generator/Atomic_Updater_X.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/generator/Atomic_X.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/generator/Primitive.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/generator/RelType.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/generator/ResultGenerator.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/generator/SynchronizedBlock.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/generator/TestGenerator.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/generator/Utils.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/generator/VolatileReadWrite.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/tracer/Op.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/tracer/TraceGen.java pom.xml tests-custom/pom.xml tests-generated/pom.xml
diffstat 233 files changed, 12282 insertions(+), 12282 deletions(-) [+]
line wrap: on
line diff
--- a/generator/pom.xml	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>org.openjdk.jcstress</groupId>
-    <artifactId>jcstress-generator</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <packaging>jar</packaging>
-
-    <name>Java Concurrency Stress Tests: Tests Generator</name>
-    <url>http://maven.apache.org</url>
-
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>2.4</version>
-                <configuration>
-                    <source>1.6</source>
-                    <target>1.6</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>com.mycila.maven-license-plugin</groupId>
-                <artifactId>maven-license-plugin</artifactId>
-                <version>1.10.b1</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>format</goal>
-                        </goals>
-                        <phase>process-sources</phase>
-                        <configuration>
-                            <header>file:///${project.basedir}/../src/license/gpl_cpe/header.txt</header>
-                            <skipExistingHeaders>false</skipExistingHeaders>
-                            <strictCheck>true</strictCheck>
-                            <basedir>${project.basedir}/src/main/</basedir>
-                            <mapping>
-                                <java>PHP</java>
-                            </mapping>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <version>1.7.1</version>
-                <executions>
-                    <execution>
-                        <id>testgen</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                        <configuration>
-                            <finalName>test-gen</finalName>
-                            <transformers>
-                                <transformer
-                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-                                    <mainClass>org.openjdk.jcstress.TestGenMain</mainClass>
-                                </transformer>
-                            </transformers>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>volatile-tracegen</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                        <configuration>
-                            <finalName>volatile-tracegen</finalName>
-                            <transformers>
-                                <transformer
-                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-                                    <mainClass>org.openjdk.jcstress.TraceGenMain</mainClass>
-                                </transformer>
-                            </transformers>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-enforcer-plugin</artifactId>
-                <version>1.2</version>
-                <executions>
-                    <execution>
-                        <id>enforce-versions</id>
-                        <goals>
-                            <goal>enforce</goal>
-                        </goals>
-                        <configuration>
-                            <rules>
-                                <requireMavenVersion>
-                                    <version>3.0</version>
-                                </requireMavenVersion>
-                                <requireJavaVersion>
-                                    <version>1.8</version>
-                                </requireJavaVersion>
-                            </rules>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-
-    </build>
-
-</project>
--- a/generator/src/main/java/org/openjdk/jcstress/TestGenMain.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +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.
- */
-package org.openjdk.jcstress;
-
-import org.openjdk.jcstress.generator.TestGenerator;
-
-import java.io.FileNotFoundException;
-
-public class TestGenMain {
-
-    public static void main(String[] args) throws FileNotFoundException {
-        if (args.length >= 2) {
-            new TestGenerator(args[0], args[1]).run();
-        } else {
-            throw new IllegalStateException("Please provide the destination dir");
-        }
-    }
-
-}
--- a/generator/src/main/java/org/openjdk/jcstress/TraceGenMain.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +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.
- */
-package org.openjdk.jcstress;
-
-import org.openjdk.jcstress.generator.TestGenerator;
-import org.openjdk.jcstress.tracer.TraceGen;
-
-import java.io.FileNotFoundException;
-
-public class TraceGenMain {
-
-    public static void main(String[] args) throws FileNotFoundException {
-        if (args.length >= 2) {
-            new TraceGen(3, args[0], args[1]).generate();
-        } else {
-            throw new IllegalStateException("Please provide the destination dir");
-        }
-    }
-
-}
--- a/generator/src/main/java/org/openjdk/jcstress/generator/AcqType.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +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.
- */
-package org.openjdk.jcstress.generator;
-
-public enum AcqType {
-    get,
-    CAS,
-    incrementAndGet,
-    getAndIncrement,
-    decrementAndGet,
-    getAndDecrement,
-    addAndGet,
-    getAndAdd,
-    getAndSet,
-}
--- a/generator/src/main/java/org/openjdk/jcstress/generator/Atomic_Updater_X.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +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.
- */
-package org.openjdk.jcstress.generator;
-
-public class Atomic_Updater_X implements Primitive {
-
-    private String unitValue;
-    private String defaultValue;
-    private String rValue;
-    private String setValue;
-
-    private final Class<?> guardType;
-    private final Class<?> primType;
-    private final AcqType acqType;
-    private final RelType relType;
-
-    public Atomic_Updater_X(Class<?> guardType, Class<?> primType, AcqType acqType, RelType relType) {
-        this.guardType = guardType;
-        this.primType = primType;
-        this.acqType = acqType;
-        this.relType = relType;
-
-        unitValue = TestGenerator.getUnitValue(primType);
-        defaultValue = TestGenerator.getDefaultValue(primType);
-        rValue = TestGenerator.getRValue(primType);
-        setValue = TestGenerator.getSetValue(primType);
-    }
-
-    @Override
-    public String printStateField() {
-        return "final " + guardType.getSimpleName() + "<State> g = " + guardType.getSimpleName() + ".<State>newUpdater(State.class, \"v\");" + "\n"
-               + "volatile " + primType.getSimpleName() + " v;";
-    }
-
-    @Override
-    public String printAcquire(String region) {
-        switch (acqType) {
-            case CAS:
-                return String.format("r.r1 = s.g.compareAndSet(s, %s, %s) ? %s : %s; \n" + region,
-                        setValue,
-                        defaultValue,
-                        setValue,
-                        defaultValue
-                );
-            case get:
-                return "r.r1 = s.g.get(s) == " + defaultValue + "? " + defaultValue + " : " + setValue + " ; \n" + region;
-            case incrementAndGet:
-                return "r.r1 = s.g.incrementAndGet(s) == (" + defaultValue + " + " + unitValue + ") ? " + defaultValue + " : " + setValue + "; \n" + region;
-            case getAndIncrement:
-                return "r.r1 = s.g.getAndIncrement(s) == " + defaultValue + "? " + defaultValue + " : " + setValue + " ; \n" + region;
-            case decrementAndGet:
-                return "r.r1 = s.g.decrementAndGet(s) == (" + defaultValue + " - " + unitValue + ") ? " + defaultValue + " : " + setValue + "; \n" + region;
-            case getAndDecrement:
-                return "r.r1 = s.g.getAndDecrement(s) == " + defaultValue + "? " + defaultValue + " : " + setValue + " ; \n" + region;
-            case addAndGet:
-                return "r.r1 = s.g.addAndGet(s, " + rValue + ") == (" + defaultValue + " + " + rValue + ") ? " + defaultValue + " : " + setValue + "; \n" + region;
-            case getAndAdd:
-                return "r.r1 = s.g.getAndAdd(s, " + rValue + ") == " + defaultValue + "? " + defaultValue + " : " + setValue + " ; \n" + region;
-            case getAndSet:
-                return "r.r1 = s.g.getAndSet(s, " + rValue + ") == " + defaultValue + "? " + defaultValue + " : " + setValue + " ; \n" + region;
-            default:
-                throw new IllegalStateException("" + acqType);
-        }
-    }
-
-    @Override
-    public String printRelease(String region) {
-        switch (relType) {
-            case set:
-                return region + "s.g.set(s, " +setValue + ");";
-            case CAS:
-                return region + "s.g.compareAndSet(s, " + defaultValue + ", " +setValue + ");";
-            case incrementAndGet:
-                return region + "s.g.incrementAndGet(s);";
-            case getAndIncrement:
-                return region + "s.g.getAndIncrement(s);";
-            case decrementAndGet:
-                return region + "s.g.decrementAndGet(s);";
-            case getAndDecrement:
-                return region + "s.g.getAndDecrement(s);";
-            case addAndGet:
-                return region + "s.g.addAndGet(s, " + rValue + ");";
-            case getAndAdd:
-                return region + "s.g.getAndAdd(s, " + rValue + ");";
-            case getAndSet:
-                return region + "s.g.getAndSet(s, " + rValue + ");";
-            default:
-                throw new IllegalStateException("" + relType);
-        }
-    }
-
-}
--- a/generator/src/main/java/org/openjdk/jcstress/generator/Atomic_X.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +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.
- */
-package org.openjdk.jcstress.generator;
-
-import java.util.EnumSet;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-public class Atomic_X implements Primitive {
-
-    private String unitValue;
-    private String defaultValue;
-    private String rValue;
-    private String setValue;
-
-    private final Class<?> guardType;
-    private final Class<?> primType;
-    private final AcqType acqType;
-    private final RelType relType;
-
-    public Atomic_X(Class<?> guardType, Class<?> primType, AcqType acqType, RelType relType) {
-        this.guardType = guardType;
-        this.primType = primType;
-        this.acqType = acqType;
-        this.relType = relType;
-
-        unitValue = TestGenerator.getUnitValue(primType);
-        defaultValue = TestGenerator.getDefaultValue(primType);
-        rValue = TestGenerator.getRValue(primType);
-        setValue = TestGenerator.getSetValue(primType);
-
-        if (guardType == AtomicBoolean.class) {
-            if (!EnumSet.of(AcqType.get, AcqType.CAS).contains(acqType) ||
-                !EnumSet.of(RelType.set, RelType.CAS).contains(relType)) {
-                throw new IllegalArgumentException();
-            }
-        }
-    }
-
-    @Override
-    public String printStateField() {
-        return "final " + guardType.getSimpleName() + " g = new " + guardType.getSimpleName() + "();";
-    }
-
-    @Override
-    public String printAcquire(String region) {
-        switch (acqType) {
-            case CAS:
-                return String.format("r.r1 = s.g.compareAndSet(%s, %s) ? %s : %s; \n" + region,
-                        setValue,
-                        defaultValue,
-                        setValue,
-                        defaultValue
-                );
-            case get:
-                return "r.r1 = s.g.get() == " + defaultValue + "? " + defaultValue + " : " + setValue + " ; \n" + region;
-            case incrementAndGet:
-                return "r.r1 = s.g.incrementAndGet() == (" + defaultValue + " + " + unitValue + ") ? " + defaultValue + " : " + setValue + "; \n" + region;
-            case getAndIncrement:
-                return "r.r1 = s.g.getAndIncrement() == " + defaultValue + "? " + defaultValue + " : " + setValue + " ; \n" + region;
-            case decrementAndGet:
-                return "r.r1 = s.g.decrementAndGet() == (" + defaultValue + " - " + unitValue + ") ? " + defaultValue + " : " + setValue + "; \n" + region;
-            case getAndDecrement:
-                return "r.r1 = s.g.getAndDecrement() == " + defaultValue + "? " + defaultValue + " : " + setValue + " ; \n" + region;
-            case addAndGet:
-                return "r.r1 = s.g.addAndGet(" + rValue + ") == (" + defaultValue + " + " + rValue + ") ? " + defaultValue + " : " + setValue + "; \n" + region;
-            case getAndAdd:
-                return "r.r1 = s.g.getAndAdd(" + rValue + ") == " + defaultValue + "? " + defaultValue + " : " + setValue + " ; \n" + region;
-            case getAndSet:
-                return "r.r1 = s.g.getAndSet(" + rValue + ") == " + defaultValue + "? " + defaultValue + " : " + setValue + " ; \n" + region;
-            default:
-                throw new IllegalStateException("" + acqType);
-        }
-    }
-
-    @Override
-    public String printRelease(String region) {
-        switch (relType) {
-            case set:
-                return region + "s.g.set(" +setValue + ");";
-            case CAS:
-                return region + "s.g.compareAndSet(" + defaultValue + ", " +setValue + ");";
-            case incrementAndGet:
-                return region + "s.g.incrementAndGet();";
-            case getAndIncrement:
-                return region + "s.g.getAndIncrement();";
-            case decrementAndGet:
-                return region + "s.g.decrementAndGet();";
-            case getAndDecrement:
-                return region + "s.g.getAndDecrement();";
-            case addAndGet:
-                return region + "s.g.addAndGet(" + rValue + ");";
-            case getAndAdd:
-                return region + "s.g.getAndAdd(" + rValue + ");";
-            case getAndSet:
-                return region + "s.g.getAndSet(" + rValue + ");";
-            default:
-                throw new IllegalStateException("" + relType);
-        }
-    }
-
-}
--- a/generator/src/main/java/org/openjdk/jcstress/generator/Primitive.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +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.
- */
-package org.openjdk.jcstress.generator;
-
-public interface Primitive {
-    String printStateField();
-
-    String printAcquire(String region);
-
-    String printRelease(String region);
-
-}
--- a/generator/src/main/java/org/openjdk/jcstress/generator/RelType.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +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.
- */
-package org.openjdk.jcstress.generator;
-
-public enum RelType {
-    set,
-    CAS,
-    incrementAndGet,
-    getAndIncrement,
-    decrementAndGet,
-    getAndDecrement,
-    addAndGet,
-    getAndAdd,
-    getAndSet,
-}
--- a/generator/src/main/java/org/openjdk/jcstress/generator/ResultGenerator.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +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.
- */
-package org.openjdk.jcstress.generator;
-
-import java.io.FileNotFoundException;
-import java.io.PrintWriter;
-import java.util.HashSet;
-import java.util.Set;
-
-public class ResultGenerator {
-    private final Set<String> generatedResults = new HashSet<String>();
-    private final String srcRoot;
-
-    public ResultGenerator(String srcRoot) {
-        this.srcRoot = srcRoot;
-    }
-
-    public String generateResult(TestGenerator.Types types) {
-        String name = "";
-        for (Class k : types.all()) {
-            if (k == boolean.class) name += "X";
-            if (k == byte.class) name += "B";
-            if (k == short.class) name += "S";
-            if (k == char.class) name += "C";
-            if (k == int.class) name += "I";
-            if (k == long.class) name += "L";
-            if (k == float.class) name += "F";
-            if (k == double.class) name += "D";
-        }
-        name += "_Result";
-
-        // already generated
-        if (!generatedResults.add(name))
-            return name;
-
-        String pathname = Utils.ensureDir(srcRoot + "/" + "org.openjdk.jcstress.infra.results.".replaceAll("\\.", "/"));
-
-        PrintWriter pw = null;
-        try {
-            pw = new PrintWriter(pathname + "/" + name + ".java");
-        } catch (FileNotFoundException e) {
-            throw new IllegalStateException(e);
-        }
-
-        pw.println("package org.openjdk.jcstress.infra.results;");
-        pw.println("");
-        pw.println("import java.io.Serializable;");
-        pw.println("import org.openjdk.jcstress.infra.Result;");
-        pw.println("");
-        pw.println("public class " + name + " implements Serializable, Result {");
-
-        {
-            int n = 1;
-            for (Class k : types.all()) {
-                pw.println("    @sun.misc.Contended");
-                pw.println("    public " + k.getSimpleName() + " r" + n + ";");
-                pw.println();
-                n++;
-            }
-        }
-
-        pw.println("    public int hashCode() {");
-        pw.println("        int result = 0;");
-        {
-            int n = 1;
-            for (Class k : types.all()) {
-                if (k == boolean.class) {
-                    pw.println("        result = 31*result + (r" + n + " ? 1 : 0);");
-                }
-                if (k == byte.class || k == short.class || k == char.class || k == int.class) {
-                    pw.println("        result = 31*result + r" + n + ";");
-                }
-                if (k == long.class) {
-                    pw.println("        result = 31*result + (int) (r" + n + " ^ (r" + n + " >>> 32));");
-                }
-                if (k == double.class) {
-                    pw.println("        result = 31*result + (int) (Double.doubleToLongBits(r" + n + ") ^ (Double.doubleToLongBits(r" + n + ") >>> 32));");
-                }
-                if (k == float.class) {
-                    pw.println("        result = 31*result + (int) (Float.floatToIntBits(r" + n + ") ^ (Float.floatToIntBits(r" + n + ") >>> 32));");
-                }
-                n++;
-            }
-        }
-        pw.println("        return result;");
-        pw.println("    }");
-        pw.println();
-        pw.println("    public boolean equals(Object o) {");
-        pw.println("        if (this == o) return true;");
-        pw.println("        if (o == null || getClass() != o.getClass()) return false;");
-        pw.println();
-        pw.println("        " + name + " that = (" + name + ") o;\n");
-
-        {
-            int n = 1;
-            for (Class k : types.all()) {
-                if (k == boolean.class || k == byte.class || k == short.class || k == char.class
-                        || k == int.class || k == long.class) {
-                    pw.println("        if (r" + n + " != that.r" + n + ") return false;");
-                }
-                if (k == double.class) {
-                    pw.println("        if (Double.compare(r" + n + ", that.r" + n + ") != 0) return false;");
-                }
-                if (k == float.class) {
-                    pw.println("        if (Float.compare(r" + n + ", that.r" + n + ") != 0) return false;");
-                }
-                n++;
-            }
-        }
-
-        pw.println("        return true;");
-        pw.println("    }");
-
-        pw.println("    public String toString() {");
-        pw.print("        return \"[\" + ");
-
-        {
-            int n = 1;
-            for (Class k : types.all()) {
-                if (n != 1)
-                    pw.print(" + \", \" + ");
-                if (k == char.class) {
-                    pw.print("(r" + n + " + 0)");
-                } else {
-                    pw.print("r" + n);
-                }
-                n++;
-            }
-            pw.println("+ \"]\";");
-        }
-
-        pw.println("    }");
-
-        pw.println("    public void reset() {");
-
-        {
-            int n = 1;
-            for (Class k : types.all()) {
-                if (k == boolean.class) {
-                    pw.println("r" + n + " = false;");
-                } else {
-                    pw.println("r" + n + " = 0;");
-                }
-                n++;
-            }
-        }
-
-        pw.println("    }");
-
-        pw.println("}");
-        pw.close();
-
-        return name;
-    }
-}
\ No newline at end of file
--- a/generator/src/main/java/org/openjdk/jcstress/generator/SynchronizedBlock.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +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.
- */
-package org.openjdk.jcstress.generator;
-
-public class SynchronizedBlock implements Primitive {
-    @Override
-    public String printStateField() {
-        return "Object lock = new Object();" + "\n" + "private volatile int g1;";
-    }
-
-    @Override
-    public String printAcquire(String region) {
-        return "synchronized(s.lock) {\n" + " r.r1 = s.g1;" + region + "}";
-    }
-
-    @Override
-    public String printRelease(String region) {
-        return "synchronized(s.lock) { " + region + " s.g1 = " + TestGenerator.getSetValue(int.class) + ";" + " }";
-    }
-}
--- a/generator/src/main/java/org/openjdk/jcstress/generator/TestGenerator.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,268 +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.
- */
-package org.openjdk.jcstress.generator;
-
-import java.io.FileNotFoundException;
-import java.io.PrintWriter;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.concurrent.atomic.AtomicLongFieldUpdater;
-
-/**
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class TestGenerator {
-
-    private final String srcRoot;
-    private final String resRoot;
-
-    private final ResultGenerator resultGenerator;
-    private PrintWriter resourceWriter;
-
-    public TestGenerator(String srcRoot, String resRoot) {
-        this.srcRoot = srcRoot;
-        this.resRoot = resRoot;
-        this.resultGenerator = new ResultGenerator(srcRoot);
-    }
-
-    public void run() throws FileNotFoundException {
-        generateMemoryEffects();
-    }
-
-    public void generateMemoryEffects() throws FileNotFoundException {
-        resourceWriter = new PrintWriter(Utils.ensureDir(resRoot + "/org/openjdk/jcstress/desc/") + "/memeffects.xml");
-        resourceWriter.println("<testsuite>");
-
-        for (Class<?> varType : Types.SUPPORTED_PRIMITIVES) {
-            for (Class<?> guardType : Types.SUPPORTED_PRIMITIVES) {
-                generate(new Types(guardType, varType), new VolatileReadWrite(guardType), "volatile_" + guardType + "_" + varType, "org.openjdk.jcstress.tests.memeffects.basic.volatiles");
-            }
-            generate(new Types(int.class, varType), new SynchronizedBlock(), "lock_" + varType, "org.openjdk.jcstress.tests.memeffects.basic.lock");
-
-            for (Class<?> guardType : Types.SUPPORTED_ATOMICS) {
-                Class<?> primType = Types.mapAtomicToPrim(guardType);
-                for (AcqType acqType : AcqType.values()) {
-                    for (RelType relType : RelType.values()) {
-                        try {
-                            generate(
-                                new Types(primType, varType),
-                                new Atomic_X(guardType, primType, acqType, relType),
-                                "atomic_" + acqType + "_" + relType + "_" + varType,
-                                "org.openjdk.jcstress.tests.memeffects.basic.atomic." + guardType.getSimpleName());
-                        } catch (IllegalArgumentException iae) {
-                            // not compatible acq/rel types, move on.
-                        }
-                    }
-                }
-            }
-
-            for (Class<?> guardType : Types.SUPPORTED_ATOMIC_UPDATERS) {
-                Class<?> primType = Types.mapAtomicToPrim(guardType);
-                for (AcqType acqType : AcqType.values()) {
-                    for (RelType relType : RelType.values()) {
-                        try {
-                            generate(
-                                new Types(primType, varType),
-                                new Atomic_Updater_X(guardType, primType, acqType, relType),
-                                "atomic_" + acqType + "_" + relType + "_" + varType,
-                                "org.openjdk.jcstress.tests.memeffects.basic.atomicupdaters." + guardType.getSimpleName());
-                        } catch (IllegalArgumentException iae) {
-                            // not compatible acq/rel types, move on.
-                        }
-                    }
-                }
-            }
-
-        }
-
-        resourceWriter.println("</testsuite>");
-        resourceWriter.close();
-    }
-
-   public void generate(Types types, Primitive prim, String klass, String pkg) throws FileNotFoundException {
-
-        resourceWriter.println("    <test name=\"" + pkg + "." + klass + "\">\n" +
-                "        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>\n" +
-                "        <description>Generated test</description>\n" +
-                "        <case>\n" +
-                "            <match>[" + getDefaultValue(types.type(0)) +", " + getDefaultValue(types.type(1))+ "]</match>\n" +
-                "            <match>[" + getDefaultValue(types.type(0)) +", " + getSetValue(types.type(1))+ "]</match>\n" +
-                "            <expect>ACCEPTABLE</expect>\n" +
-                "            <description>Seeing default guard, can see any value</description>\n" +
-                "        </case>\n" +
-                "        <case>\n" +
-                "            <match>[" + getSetValue(types.type(0)) +", " + getSetValue(types.type(1))+ "]</match>\n" +
-                "            <expect>ACCEPTABLE</expect>\n" +
-                "            <description>Seeing set guard, seeing the updated value</description>\n" +
-                "        </case>\n" +
-                "        <case>\n" +
-                "            <match>[" + getSetValue(types.type(0)) +", " + getDefaultValue(types.type(1))+ "]</match>\n" +
-                "            <expect>FORBIDDEN</expect>\n" +
-                "            <description>Seeing set guard, not seeing the updated value</description>\n" +
-                "        </case>\n" +
-                "        <unmatched>\n" +
-                "            <expect>FORBIDDEN</expect>\n" +
-                "            <description>Other cases are not expected.</description>\n" +
-                "        </unmatched>\n" +
-                "    </test>");
-
-        String resultName = resultGenerator.generateResult(types);
-
-        String pathname = Utils.ensureDir(srcRoot + "/" + pkg.replaceAll("\\.", "/"));
-
-        PrintWriter pw = new PrintWriter(pathname + "/" + klass + ".java");
-
-        pw.println("package " + pkg +";\n" +
-                "\n" +
-                "import java.util.concurrent.*;\n" +
-                "import java.util.concurrent.atomic.*;\n" +
-                "import org.openjdk.jcstress.infra.results." + resultName + ";\n" +
-                "import org.openjdk.jcstress.tests.Actor2_Test;\n" +
-                "\n" +
-                "public class " + klass + " implements Actor2_Test<" + klass + ".State, " + resultName + "> {\n" +
-                "\n" +
-                "    @Override\n" +
-                "    public State newState() {\n" +
-                "        return new State();\n" +
-                "    }\n" +
-                "\n" +
-                "    @Override\n" +
-                "    public void actor1(State s, " + resultName +" r) {");
-
-        pw.println("        " + prim.printRelease("        s.a = " + getRValue(types.type(1)) +";"));
-
-        pw.println(
-                "    }\n" +
-                        "\n" +
-                        "    @Override\n" +
-                        "    public void actor2(State s, " + resultName +" r) {");
-
-        pw.println("        " + prim.printAcquire("        r.r2 = s.a;"));
-
-        pw.println(
-                "    }\n" +
-                        "\n" +
-                        "    @Override\n" +
-                        "    public " + resultName + " newResult() {\n" +
-                        "        return new " + resultName + "();\n" +
-                        "    }\n" +
-                        "\n" +
-                        "    public static class State {");
-
-        pw.println("        " + prim.printStateField());
-
-        pw.println("        public " + types.type(1) + " a;");
-        pw.println("    }");
-        pw.println("}");
-
-        pw.close();
-    }
-
-    public static String getDefaultValue(Class<?> k) {
-        if (k == boolean.class) return "false";
-        if (k == byte.class)    return "0";
-        if (k == short.class)   return "0";
-        if (k == char.class)    return "0";
-        if (k == int.class)     return "0";
-        if (k == long.class)    return "0";
-        if (k == float.class)   return "0.0";
-        if (k == double.class)  return "0.0";
-        return null;
-    }
-
-    public static String getSetValue(Class<?> k) {
-        if (k == boolean.class) return "true";
-        if (k == byte.class)    return "1";
-        if (k == short.class)   return "42";
-        if (k == char.class)    return "65";
-        if (k == int.class)     return "42";
-        if (k == long.class)    return "42";
-        if (k == float.class)   return "42.0";
-        if (k == double.class)  return "42.0";
-        return null;
-    }
-
-    public static String getRValue(Class<?> k) {
-        if (k == boolean.class) return "true";
-        if (k == byte.class)    return "(byte)1";
-        if (k == short.class)   return "42";
-        if (k == char.class)    return "'A'";
-        if (k == int.class)     return "42";
-        if (k == long.class)    return "42L";
-        if (k == float.class)   return "42.0f";
-        if (k == double.class)  return "42.0d";
-        return null;
-    }
-
-    public static String getUnitValue(Class<?> k) {
-        if (k == boolean.class) return "false";
-        if (k == byte.class)    return "1";
-        if (k == short.class)   return "1";
-        if (k == char.class)    return "(char)1";
-        if (k == int.class)     return "1";
-        if (k == long.class)    return "1L";
-        if (k == float.class)   return "1.0f";
-        if (k == double.class)  return "1.0d";
-        return null;
-    }
-
-    public static class Types {
-        public static final Class<?>[] SUPPORTED_PRIMITIVES =
-                new Class<?>[] { boolean.class, byte.class, short.class, char.class,
-                                 int.class, long.class, float.class, double.class};
-
-        public static final Class<?>[] SUPPORTED_ATOMICS =
-                new Class<?>[] { AtomicInteger.class, AtomicLong.class, AtomicBoolean.class };
-
-        public static final Class<?>[] SUPPORTED_ATOMIC_UPDATERS =
-                new Class<?>[] { AtomicIntegerFieldUpdater.class, AtomicLongFieldUpdater.class };
-
-        private final Class<?>[] types;
-
-        public Types(Class<?>... types) {
-            this.types = types;
-        }
-
-        public Class<?> type(int index) {
-            return types[index];
-        }
-
-        public Class[] all() {
-            return types;
-        }
-
-        public static Class<?> mapAtomicToPrim(Class<?> guardType) {
-            if (guardType == AtomicInteger.class) return int.class;
-            if (guardType == AtomicLong.class) return long.class;
-            if (guardType == AtomicBoolean.class) return boolean.class;
-            if (guardType == AtomicIntegerFieldUpdater.class) return int.class;
-            if (guardType == AtomicLongFieldUpdater.class) return long.class;
-            throw new IllegalStateException("No case");
-        }
-    }
-
-}
--- a/generator/src/main/java/org/openjdk/jcstress/generator/Utils.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +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.
- */
-package org.openjdk.jcstress.generator;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-public class Utils {
-    public static String ensureDir(String path) {
-        File file = new File(path);
-        if (!file.exists()) {
-            file.mkdirs();
-        }
-        return file.getAbsolutePath();
-    }
-
-    public static <T> List<List<T>> permutate(List<T> src) {
-        if (src.size() <= 1) {
-            List<List<T>> al = new ArrayList<List<T>>();
-            al.add(src);
-            return al;
-        }
-
-        List<List<T>> result = new ArrayList<List<T>>();
-        for (int i = 0; i < src.size(); i++) {
-            List<T> copy = new ArrayList<T>(src);
-            T el = copy.remove(i);
-
-            for (List<T> perm : permutate(copy)) {
-                List<T> c = new ArrayList<T>(perm);
-                c.add(0, el);
-                result.add(c);
-            }
-        }
-
-        return result;
-    }
-
-
-}
\ No newline at end of file
--- a/generator/src/main/java/org/openjdk/jcstress/generator/VolatileReadWrite.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +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.
- */
-package org.openjdk.jcstress.generator;
-
-public class VolatileReadWrite implements Primitive {
-
-    private final Class<?> type;
-
-    public VolatileReadWrite(Class<?> type) {
-        this.type = type;
-    }
-
-    @Override
-    public String printStateField() {
-        return "volatile " + type.getSimpleName() + " f;";
-    }
-
-    @Override
-    public String printAcquire(String region) {
-        return "r.r1 = s.f;\n" + region;
-    }
-
-    @Override
-    public String printRelease(String region) {
-        return region + "\ns.f = " + TestGenerator.getRValue(type) + ";";
-    }
-
-}
--- a/generator/src/main/java/org/openjdk/jcstress/tracer/Op.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +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.
- */
-package org.openjdk.jcstress.tracer;
-
-public class Op {
-
-    private static int IDS;
-
-    private final Type type;
-    private final int varId;
-    private final int resId;
-
-    public Op(Type type, int varId) {
-        this(type, varId, -1);
-    }
-
-    public Op(Type type, int varId, int resId) {
-        this.type = type;
-        this.varId = varId;
-        this.resId = resId;
-    }
-
-    public int getResId() {
-        return resId;
-    }
-
-    public Op setResId(int resId) {
-        return new Op(type, varId, resId);
-    }
-
-    public enum Type {
-        LOAD,
-        STORE,
-    }
-
-    public Type getType() {
-        return type;
-    }
-
-    public int getVarId() {
-        return varId;
-    }
-
-    @Override
-    public String toString() {
-        switch (type) {
-            case LOAD:
-                return "r" + resId + " = x" + varId;
-            case STORE:
-                return "x" + varId + " = C" + resId;
-            default:
-                throw new IllegalStateException();
-        }
-    }
-}
--- a/generator/src/main/java/org/openjdk/jcstress/tracer/TraceGen.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,544 +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.
- */
-package org.openjdk.jcstress.tracer;
-
-import org.openjdk.jcstress.generator.ResultGenerator;
-import org.openjdk.jcstress.generator.TestGenerator;
-import org.openjdk.jcstress.generator.Utils;
-
-import java.io.FileNotFoundException;
-import java.io.PrintWriter;
-import java.util.*;
-
-public class TraceGen {
-
-    private final int vars;
-    private final String srcDir;
-    private final String resDir;
-    private final ResultGenerator resultGenerator;
-    private PrintWriter resourceWriter;
-
-    public TraceGen(int vars, String srcDir, String resDir) {
-        this.vars = vars;
-        this.srcDir = srcDir;
-        this.resDir = resDir;
-        this.resultGenerator = new ResultGenerator(srcDir);
-    }
-
-    public void generate() {
-        try {
-            resourceWriter = new PrintWriter(Utils.ensureDir(resDir + "/org/openjdk/jcstress/desc/") + "/seqcst-volatiles.xml");
-        } catch (FileNotFoundException e) {
-            throw new IllegalStateException(e);
-        }
-        resourceWriter.println("<testsuite>");
-
-        List<Op> possibleOps = new ArrayList<Op>();
-        for (int v = 0; v < vars; v++) {
-            for (Op.Type t : Op.Type.values()) {
-                possibleOps.add(new Op(t, v));
-            }
-        }
-
-        List<Trace> allTraces = new ArrayList<Trace>();
-        List<Trace> traces = Collections.singletonList(new Trace());
-        for (int l = 0; l < possibleOps.size(); l++) {
-            traces = product(traces, possibleOps);
-            allTraces.addAll(traces);
-        }
-        System.out.println(traces.size() + " basic traces");
-
-        List<Trace> newTraces = new ArrayList<Trace>();
-        for (Trace trace : allTraces) {
-            if (!trace.hasLoads()) continue;
-            if (!trace.hasStores()) continue;
-            if (trace.hasNonMatchingLoads()) continue;
-            if (trace.hasNonMatchingStores()) continue;
-            if (!trace.canonicalId().equals(trace.id())) continue;
-
-            int constId = 0;
-            int resId = 0;
-            for (int c = 0; c < trace.ops.size(); c++) {
-                Op op = trace.ops.get(c);
-                switch (op.getType()) {
-                    case LOAD:
-                        trace.ops.set(c, op.setResId(resId++));
-                        break;
-                    case STORE:
-                        trace.ops.set(c, op.setResId(constId++));
-                        break;
-                    default:
-                        throw new IllegalStateException();
-                }
-            }
-            newTraces.add(trace);
-        }
-        traces = newTraces;
-        System.out.println(traces.size() + " interesting traces");
-
-        List<MultiTrace> multiTraces = new ArrayList<MultiTrace>();
-        for (Trace trace : traces) {
-            for (int l1 = 0; l1 < trace.getLength(); l1++) {
-                for (int l2 = l1; l2 < trace.getLength(); l2++) {
-                    for (int l3 = l2; l3 < trace.getLength(); l3++) {
-                        MultiTrace mt = split(trace, l1, l2, l3);
-                        multiTraces.add(mt);
-                    }
-                }
-            }
-        }
-        System.out.println(multiTraces.size() + " basic multi-traces");
-
-        Set<String> processedMultitraces = new HashSet<String>();
-
-        int testCount = 0;
-        for (MultiTrace mt : multiTraces) {
-            if (!processedMultitraces.add(mt.id())) continue;
-
-            List<Trace> linearTraces = mt.linearize();
-            Set<Map<Integer, Integer>> scResults = new HashSet<Map<Integer, Integer>>();
-            Set<Map<Integer, Integer>> allResults = new HashSet<Map<Integer, Integer>>();
-
-            for (Trace linear : linearTraces) {
-                SortedMap<Integer, Integer> results = linear.interpret();
-                scResults.add(results);
-            }
-
-            for (Trace perm : mt.original.allPermutations()) {
-                SortedMap<Integer, Integer> results = perm.interpret();
-                allResults.add(results);
-            }
-
-            // regardless of the reorderings, all results appear SC.
-            //    => the violations are undetectable
-            assert allResults.containsAll(scResults);
-            if (scResults.equals(allResults)) continue;
-
-            List<String> mappedResult = new ArrayList<String>();
-            for (Map<Integer, Integer> m : scResults) {
-                List<String> mappedValues = new ArrayList<String>();
-                for (int v : m.values()) {
-                    mappedValues.add(mapConst(v));
-                }
-                mappedResult.add(mappedValues.toString());
-            }
-
-            emit(mt, mappedResult);
-            if ((testCount++ % 1000) == 0)
-                System.out.print(".");
-        }
-        System.out.println();
-        System.out.println(testCount + " interesting multi-traces");
-
-        resourceWriter.println("</testsuite>");
-        resourceWriter.close();
-    }
-
-    private void emit(MultiTrace mt, List<String> results) {
-
-        final String pkg = "org.openjdk.jcstress.tests.seqcst.volatiles";
-
-        String pathname = Utils.ensureDir(srcDir + "/" + pkg.replaceAll("\\.", "/"));
-
-        String klass = mt.id() + "Test";
-
-        resourceWriter.println("    <test name=\"" + pkg + "." + klass + "\">\n" +
-                "        <contributed-by>Aleksey Shipilev (aleksey.shipilev@oracle.com)</contributed-by>\n" +
-                "        <description>Generated test</description>\n");
-
-        for (String r : results) {
-                resourceWriter.println(
-                "        <case>\n" +
-                "            <match>" + r + "</match>\n" +
-                "            <expect>ACCEPTABLE</expect>\n" +
-                "            <description>Sequential consistency.</description>\n" +
-                "        </case>\n"
-            );
-        }
-
-        resourceWriter.println(
-                "        <unmatched>\n" +
-                "            <expect>FORBIDDEN</expect>\n" +
-                "            <description>Non sequentially-consistent result</description>\n" +
-                "        </unmatched>\n" +
-                "    </test>");
-
-
-        Class[] klasses = new Class[mt.original.getLoadCount()];
-        for (int c = 0; c < klasses.length; c++) {
-            klasses[c] = int.class;
-        }
-
-        String resultName = resultGenerator.generateResult(new TestGenerator.Types(klasses));
-
-        PrintWriter pw;
-        try {
-            pw = new PrintWriter(pathname + "/" + klass + ".java");
-        } catch (FileNotFoundException e) {
-            throw new IllegalStateException(e);
-        }
-
-        int threads = mt.traces.size();
-
-        pw.println("package " + pkg + ";\n" +
-                "\n" +
-                "import java.util.concurrent.*;\n" +
-                "import java.util.concurrent.atomic.*;\n" +
-                "import org.openjdk.jcstress.infra.results." + resultName + ";\n" +
-                "import org.openjdk.jcstress.tests.Actor" + threads + "_Test;\n" +
-                "\n" +
-                "public class " + klass + " implements Actor" + threads + "_Test<" + klass + ".State, " + resultName + "> {\n" +
-                "\n" +
-                "    @Override\n" +
-                "    public State newState() {\n" +
-                "        return new State();\n" +
-                "    }\n" +
-                "\n");
-
-
-        for (int t = 0; t < threads; t++) {
-            pw.println(
-                    "    @Override\n" +
-                            "    public void actor" + (t+1) + "(State s, " + resultName + " r) {");
-
-            for (Op op : mt.traces.get(t).ops) {
-                switch (op.getType()) {
-                    case LOAD:
-                        pw.println("        r.r" + (op.getResId() + 1) + " = s.x" + op.getVarId() + ";");
-                        break;
-                    case STORE:
-                        pw.println("        s.x" + op.getVarId() + " = " + mapConst(op.getResId()) + ";");
-                        break;
-                }
-            }
-
-            pw.println("    }\n");
-        }
-
-        pw.println(
-                        "    @Override\n" +
-                        "    public " + resultName + " newResult() {\n" +
-                        "        return new " + resultName + "();\n" +
-                        "    }\n" +
-                        "\n" +
-                        "    public static class State {");
-
-        Set<Integer> exist = new HashSet<Integer>();
-        for (Trace trace : mt.traces)  {
-            for (Op op : trace.ops) {
-                if (exist.add(op.getVarId()))
-                    pw.println("        public volatile int x" + op.getVarId() + ";");
-            }
-        }
-        pw.println("    }");
-        pw.println("}");
-
-        pw.close();
-    }
-
-    private String mapConst(int resId) {
-        return String.valueOf(resId + 1);
-    }
-
-    private MultiTrace split(Trace trace, int s1, int s2, int s3) {
-        Trace t1 = trace.sub(0, s1);
-        Trace t2 = trace.sub(s1, s2);
-        Trace t3 = trace.sub(s2, s3);
-        Trace t4 = trace.sub(s3, trace.getLength());
-        return new MultiTrace(trace, t1, t2, t3, t4);
-    }
-
-    private List<Trace> product(List<Trace> traces, List<Op> ops) {
-        List<Trace> newTraces = new ArrayList<Trace>();
-        for (Trace trace : traces) {
-            for (Op op : ops) {
-                newTraces.add(trace.pushTail(op));
-            }
-        }
-        return newTraces;
-    }
-
-    public class Trace {
-        private final List<Op> ops;
-
-        public Trace() {
-            ops = new ArrayList<Op>();
-        }
-
-        public Trace(List<Op> extOps) {
-            ops = new ArrayList<Op>(extOps);
-        }
-
-        public Trace pushHead(Op op) {
-            Trace nT = new Trace();
-            nT.ops.add(op);
-            nT.ops.addAll(ops);
-            return nT;
-        }
-
-        public Trace pushTail(Op op) {
-            Trace nT = new Trace();
-            nT.ops.addAll(ops);
-            nT.ops.add(op);
-            return nT;
-        }
-
-        @Override
-        public String toString() {
-            return "{" + ops + '}';
-        }
-
-        public int getLength() {
-            return ops.size();
-        }
-
-        public Trace sub(int left, int right) {
-            Trace nT = new Trace();
-            nT.ops.addAll(ops.subList(left, right));
-            return nT;
-        }
-
-        public SortedMap<Integer, Integer> interpret() {
-            Map<Integer, Integer> values = new HashMap<Integer, Integer>();
-            for (int v = 0; v < vars; v++) {
-                values.put(v, -1);
-            }
-
-            SortedMap<Integer, Integer> resValues = new TreeMap<Integer, Integer>();
-
-            for (Op op : ops) {
-                switch (op.getType()) {
-                    case LOAD:
-                        int v = values.get(op.getVarId());
-                        resValues.put(op.getResId(), v);
-                        break;
-                    case STORE:
-                        values.put(op.getVarId(), op.getResId());
-                        break;
-                    default:
-                        throw new IllegalStateException();
-                }
-            }
-
-            return resValues;
-        }
-
-        public List<Trace> allPermutations() {
-            List<Trace> traces = new ArrayList<Trace>();
-            for (List<Op> perm : Utils.permutate(ops)) {
-                traces.add(new Trace(perm));
-            }
-            return traces;
-        }
-
-        public Trace removeFirst() {
-            Trace nT = new Trace();
-            nT.ops.addAll(ops);
-            nT.ops.remove(0);
-            return nT;
-        }
-
-        public boolean hasLoads() {
-            for (Op op : ops) {
-                if (op.getType() == Op.Type.LOAD) return true;
-            }
-            return false;
-        }
-
-        public boolean hasStores() {
-            for (Op op : ops) {
-                if (op.getType() == Op.Type.STORE) return true;
-            }
-            return false;
-        }
-
-        public int getLoadCount() {
-            int count = 0;
-            for (Op op : ops) {
-                if (op.getType() == Op.Type.LOAD) count++;
-            }
-            return count;
-        }
-
-        public String id() {
-            StringBuilder sb = new StringBuilder();
-            for (Op op : ops) {
-                switch (op.getType()) {
-                    case LOAD:
-                        sb.append("L");
-                        break;
-                    case STORE:
-                        sb.append("S");
-                        break;
-                    default:
-                        throw new IllegalStateException();
-                }
-                sb.append(op.getVarId() + 1);
-                sb.append("_");
-            }
-            return sb.toString();
-        }
-
-        public String canonicalId() {
-            int varId = 0;
-            Map<Integer, Integer> varMap = new HashMap<Integer, Integer>();
-            for (Op op : ops) {
-                Integer id = varMap.get(op.getVarId());
-                if (id == null) {
-                    id = varId++;
-                    varMap.put(op.getVarId(), id);
-                }
-            }
-
-            StringBuilder sb = new StringBuilder();
-            for (Op op : ops) {
-                switch (op.getType()) {
-                    case LOAD:
-                        sb.append("L");
-                        break;
-                    case STORE:
-                        sb.append("S");
-                        break;
-                    default:
-                        throw new IllegalStateException();
-                }
-                sb.append(varMap.get(op.getVarId()) + 1);
-                sb.append("_");
-            }
-            return sb.toString();
-        }
-
-        public boolean hasNonMatchingLoads() {
-            Set<Integer> stores = new HashSet<Integer>();
-            for (Op op : ops) {
-                if (op.getType() == Op.Type.STORE) {
-                    stores.add(op.getVarId());
-                }
-            }
-
-            for (Op op : ops) {
-                if (op.getType() == Op.Type.LOAD) {
-                    if (!stores.contains(op.getVarId()))
-                        return true;
-                }
-            }
-
-            return false;
-        }
-
-        public boolean hasNonMatchingStores() {
-            Set<Integer> loads = new HashSet<Integer>();
-            for (Op op : ops) {
-                if (op.getType() == Op.Type.LOAD) {
-                    loads.add(op.getVarId());
-                }
-            }
-
-            for (Op op : ops) {
-                if (op.getType() == Op.Type.STORE) {
-                    if (!loads.contains(op.getVarId()))
-                        return true;
-                }
-            }
-
-            return false;
-        }
-    }
-
-    public class MultiTrace {
-        private final Trace original;
-        private final List<Trace> traces;
-
-        public MultiTrace(Trace original, Trace... traces) {
-            this(original, Arrays.asList(traces));
-        }
-
-        public MultiTrace(Trace original, List<Trace> copy) {
-            this.original = original;
-
-            this.traces = new ArrayList<Trace>();
-            for (Trace t : copy) {
-                if (!t.ops.isEmpty())
-                    traces.add(t);
-            }
-
-            Collections.sort(traces, new Comparator<Trace>() {
-                @Override
-                public int compare(Trace o1, Trace o2) {
-                    return o1.id().compareTo(o2.id());
-                }
-            });
-        }
-
-        public List<Trace> linearize() {
-            if (traces.isEmpty()) {
-                return Collections.singletonList(new Trace());
-            }
-
-            List<Trace> newTraces = new ArrayList<Trace>();
-
-            for (int t = 0; t < traces.size(); t++) {
-                List<Trace> copy = new ArrayList<Trace>();
-                copy.addAll(traces);
-
-                Trace cT = copy.get(t);
-                if (cT.ops.isEmpty()) {
-                    copy.remove(t);
-                    for (Trace trace : new MultiTrace(original, copy).linearize()) {
-                        newTraces.add(trace);
-                    }
-                } else {
-                    Op op = cT.ops.get(0);
-                    copy.set(t, cT.removeFirst());
-
-                    if (cT.ops.isEmpty()) {
-                        copy.remove(t);
-                    }
-
-                    for (Trace trace : new MultiTrace(original, copy).linearize()) {
-                        newTraces.add(trace.pushHead(op));
-                    }
-                }
-            }
-
-            return newTraces;
-        }
-
-        @Override
-        public String toString() {
-            return "{" + traces + '}';
-        }
-
-        public String id() {
-            StringBuilder sb = new StringBuilder();
-            for (Trace trace : traces) {
-                sb.append(trace.id());
-                sb.append("_");
-            }
-            return sb.toString();
-        }
-    }
-
-}
--- a/harness/pom.xml	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,191 +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.
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>org.openjdk.jcstress</groupId>
-    <artifactId>jcstress-harness</artifactId>
-    <version>1.0-SNAPSHOT</version>
-    <packaging>jar</packaging>
-
-    <name>Java Concurrency Stress Tests: Harness</name>
-    <url>http://maven.apache.org</url>
-
-    <scm>
-        <connection>scm:hg:http://hg.openjdk.java.net/code-tools/jcstress/</connection>
-    </scm>
-
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>2.4</version>
-                <configuration>
-                    <source>1.6</source>
-                    <target>1.6</target>
-                    <proc>none</proc>
-                    <compilerArguments>
-                        <Xlint:all/>
-                        <Werror/>
-                    </compilerArguments>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.7</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>${project.build.directory}/generated-sources/descriptions/</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>jaxb2-maven-plugin</artifactId>
-                <version>1.5</version>
-                <executions>
-                    <execution>
-                        <id>schema-descr</id>
-                        <goals>
-                            <goal>xjc</goal>
-                        </goals>
-                        <configuration>
-                            <packageName>org.openjdk.jcstress.schema.descr</packageName>
-                            <outputDirectory>${project.build.directory}/generated-sources/descriptions/</outputDirectory>
-                            <schemaDirectory>src/main/resources/xsd/descriptions/</schemaDirectory>
-                            <staleFile>${project.build.directory}/jaxb2/.xjcStaleFlag1</staleFile>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>com.mycila.maven-license-plugin</groupId>
-                <artifactId>maven-license-plugin</artifactId>
-                <version>1.10.b1</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>format</goal>
-                        </goals>
-                        <phase>process-sources</phase>
-                        <configuration>
-                            <header>file:///${project.basedir}/../src/license/gpl_cpe/header.txt</header>
-                            <skipExistingHeaders>false</skipExistingHeaders>
-                            <strictCheck>true</strictCheck>
-                            <basedir>${project.basedir}/src/main/</basedir>
-                            <mapping>
-                                <java>PHP</java>
-                            </mapping>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>buildnumber-maven-plugin</artifactId>
-                <version>1.1</version>
-                <executions>
-                    <execution>
-                        <phase>generate-resources</phase>
-                        <goals>
-                            <goal>create</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <doCheck>false</doCheck>
-                    <doUpdate>false</doUpdate>
-                    <shortRevisionLength>16</shortRevisionLength>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <version>2.4</version>
-                <configuration>
-                    <archive>
-                        <manifest>
-                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-                        </manifest>
-                        <manifestEntries>
-                            <Implementation-Build>${buildNumber}</Implementation-Build>
-                            <Build-Time>${maven.build.timestamp}</Build-Time>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-enforcer-plugin</artifactId>
-                <version>1.2</version>
-                <executions>
-                    <execution>
-                        <id>enforce-versions</id>
-                        <goals>
-                            <goal>enforce</goal>
-                        </goals>
-                        <configuration>
-                            <rules>
-                                <requireMavenVersion>
-                                    <version>3.0</version>
-                                </requireMavenVersion>
-                                <requireJavaVersion>
-                                    <version>1.8</version>
-                                </requireJavaVersion>
-                            </rules>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-
-    </build>
-
-    <dependencies>
-        <dependency>
-            <groupId>net.sf.jopt-simple</groupId>
-            <artifactId>jopt-simple</artifactId>
-            <version>4.6</version>
-        </dependency>
-    </dependencies>
-</project>
--- a/harness/src/main/java/org/openjdk/jcstress/ForkedMain.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +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.
- */
-package org.openjdk.jcstress;
-
-import org.openjdk.jcstress.infra.collectors.NetworkOutputCollector;
-import org.openjdk.jcstress.util.VMSupport;
-
-/**
- * Entry point for the forked VM run.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class ForkedMain {
-
-    public static void main(String[] args) throws Exception {
-        Options opts = new Options(args);
-        if (!opts.parse()) {
-            System.exit(1);
-        }
-
-        try {
-            VMSupport.tryInit();
-        } catch (NoClassDefFoundError e) {
-            // expected on JDK 7 and lower, parent should have printed the message for user
-        }
-
-        NetworkOutputCollector collector = new NetworkOutputCollector(opts.getHostName(), opts.getHostPort());
-        new JCStress().run(opts, true, collector);
-        collector.close();
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/JCStress.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,371 +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.
- */
-package org.openjdk.jcstress;
-
-import org.openjdk.jcstress.infra.Result;
-import org.openjdk.jcstress.infra.Scheduler;
-import org.openjdk.jcstress.infra.Status;
-import org.openjdk.jcstress.infra.collectors.DiskReadCollector;
-import org.openjdk.jcstress.infra.collectors.DiskWriteCollector;
-import org.openjdk.jcstress.infra.collectors.InProcessCollector;
-import org.openjdk.jcstress.infra.collectors.MuxCollector;
-import org.openjdk.jcstress.infra.collectors.NetworkInputCollector;
-import org.openjdk.jcstress.infra.collectors.TestResult;
-import org.openjdk.jcstress.infra.collectors.TestResultCollector;
-import org.openjdk.jcstress.infra.grading.ConsoleReportPrinter;
-import org.openjdk.jcstress.infra.grading.ExceptionReportPrinter;
-import org.openjdk.jcstress.infra.grading.HTMLReportPrinter;
-import org.openjdk.jcstress.infra.runners.Actor1_Runner;
-import org.openjdk.jcstress.infra.runners.Actor2_Arbiter1_Runner;
-import org.openjdk.jcstress.infra.runners.Actor2_Runner;
-import org.openjdk.jcstress.infra.runners.Actor3_Runner;
-import org.openjdk.jcstress.infra.runners.Actor4_Runner;
-import org.openjdk.jcstress.infra.runners.Runner;
-import org.openjdk.jcstress.infra.runners.TerminationRunner;
-import org.openjdk.jcstress.tests.Actor1_Test;
-import org.openjdk.jcstress.tests.Actor2_Arbiter1_Test;
-import org.openjdk.jcstress.tests.Actor2_Test;
-import org.openjdk.jcstress.tests.Actor3_Test;
-import org.openjdk.jcstress.tests.Actor4_Test;
-import org.openjdk.jcstress.tests.ConcurrencyTest;
-import org.openjdk.jcstress.tests.TerminationTest;
-import org.openjdk.jcstress.util.InputStreamDrainer;
-import org.openjdk.jcstress.util.Reflections;
-
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.io.PrintWriter;
-import java.lang.management.ManagementFactory;
-import java.lang.management.RuntimeMXBean;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.atomic.AtomicInteger;
-
-/**
- * JCStress main entry point.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class JCStress {
-    final ExecutorService pool;
-    private final PrintStream out;
-    NetworkInputCollector networkCollector;
-    Scheduler scheduler;
-
-    public JCStress() {
-        this.pool = Executors.newCachedThreadPool(new ThreadFactory() {
-            private final AtomicInteger id = new AtomicInteger();
-
-            @Override
-            public Thread newThread(Runnable r) {
-                Thread t = new Thread(r);
-                t.setName("worker" + id.incrementAndGet());
-                t.setDaemon(true);
-                return t;
-            }
-        });
-        out = System.out;
-    }
-
-    public void run(Options opts) throws Exception {
-        SortedSet<Class<? extends ConcurrencyTest>> tests = filterTests(opts.getTestFilter(), ConcurrencyTest.class);
-
-        if (!opts.shouldParse()) {
-            opts.printSettingsOn(out);
-
-            ConsoleReportPrinter printer = new ConsoleReportPrinter(opts, new PrintWriter(out, true), tests.size());
-            DiskWriteCollector diskCollector = new DiskWriteCollector(opts.getResultFile());
-            TestResultCollector sink = MuxCollector.of(printer, diskCollector);
-
-            networkCollector = new NetworkInputCollector(sink);
-
-            // FIXME: Scheduler will stuck itself if there is a test requiring more than $userCPUs.
-            scheduler = new Scheduler(opts.getUserCPUs());
-
-            if (opts.shouldFork()) {
-                for (Class<? extends ConcurrencyTest> test : tests) {
-                    for (int f = 0; f < opts.getForks(); f++) {
-                        runForked(opts, test, sink);
-                    }
-                }
-            } else {
-                run(opts, tests, false, sink);
-            }
-
-            scheduler.waitFinish();
-            networkCollector.terminate();
-
-            diskCollector.close();
-        }
-
-        out.println("Reading the results back... ");
-
-        InProcessCollector collector = new InProcessCollector();
-        new DiskReadCollector(opts.getResultFile(), collector).dump();
-
-        out.println("Generating the report... ");
-
-        HTMLReportPrinter p = new HTMLReportPrinter(opts, collector);
-        p.parse();
-
-        out.println("Look at " + opts.getResultDest() + "index.html for the complete run results.");
-        out.println();
-
-        out.println("Will throw any pending exceptions at this point.");
-        ExceptionReportPrinter e = new ExceptionReportPrinter(opts, collector);
-        e.parse();
-
-        out.println("Done.");
-    }
-
-    void runForked(final Options opts, final Class<? extends ConcurrencyTest> test, final TestResultCollector collector) {
-        try {
-            scheduler.schedule(new Scheduler.ScheduledTask() {
-                @Override
-                public int getTokens() {
-                    if (Actor1_Test.class.isAssignableFrom(test)) return 1;
-                    if (Actor2_Test.class.isAssignableFrom(test)) return 2;
-                    if (Actor3_Test.class.isAssignableFrom(test)) return 3;
-                    if (Actor4_Test.class.isAssignableFrom(test)) return 4;
-                    if (Actor2_Arbiter1_Test.class.isAssignableFrom(test)) return 3;
-                    if (TerminationTest.class.isAssignableFrom(test)) return 2;
-                    return 1;
-                }
-
-                @Override
-                public void run() {
-                    runForked0(opts, test, collector);
-                }
-            });
-        } catch (InterruptedException e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
-    void runForked0(Options opts, Class<? extends ConcurrencyTest> test, TestResultCollector collector) {
-        try {
-            Collection<String> commandString = getSeparateExecutionCommand(opts, test.getName());
-            Process p = Runtime.getRuntime().exec(commandString.toArray(new String[commandString.size()]));
-
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
-
-            InputStreamDrainer errDrainer = new InputStreamDrainer(p.getErrorStream(), baos);
-            InputStreamDrainer outDrainer = new InputStreamDrainer(p.getInputStream(), baos);
-
-            errDrainer.start();
-            outDrainer.start();
-
-            int ecode = p.waitFor();
-
-            errDrainer.join();
-            outDrainer.join();
-
-            if (ecode != 0) {
-                // Test had failed, record this.
-                TestResult result = new TestResult(test.getName(), Status.VM_ERROR);
-                String s = new String(baos.toByteArray()).trim();
-                result.addAuxData(s);
-                collector.add(result);
-            }
-
-        } catch (IOException ex) {
-            ex.printStackTrace();
-        } catch (InterruptedException ex) {
-            ex.printStackTrace();
-        }
-    }
-
-    public void run(Options opts, boolean alreadyForked, TestResultCollector collector) throws Exception {
-        run(opts, filterTests(opts.getTestFilter(), ConcurrencyTest.class), alreadyForked, collector);
-    }
-
-    public void async(final Runner runner) throws ExecutionException, InterruptedException {
-        if (scheduler == null) {
-            runner.run();
-            return;
-        }
-
-        scheduler.schedule(new Scheduler.ScheduledTask() {
-            @Override
-            public int getTokens() {
-                return runner.requiredThreads();
-            }
-
-            @Override
-            public void run() {
-                runner.run();
-            }
-        });
-    }
-
-    @SuppressWarnings("unchecked")
-    public void run(Options opts, Set<Class<? extends ConcurrencyTest>> tests, boolean alreadyForked, TestResultCollector collector) throws Exception {
-
-        for (Class<? extends ConcurrencyTest> test : tests) {
-            if (Actor2_Arbiter1_Test.class.isAssignableFrom(test)) {
-                @SuppressWarnings("unchecked")
-                Actor2_Arbiter1_Test<Object, ? extends Result> obj = (Actor2_Arbiter1_Test<Object, ? extends Result>) test.newInstance();
-                async(new Actor2_Arbiter1_Runner(opts, obj, collector, pool));
-            }
-
-            if (Actor1_Test.class.isAssignableFrom(test)) {
-                @SuppressWarnings("unchecked")
-                Actor1_Test<Object, ? extends Result> obj = (Actor1_Test<Object, ? extends Result>) test.newInstance();
-                async(new Actor1_Runner(opts, obj, collector, pool));
-            }
-
-            if (Actor2_Test.class.isAssignableFrom(test)) {
-                @SuppressWarnings("unchecked")
-                Actor2_Test<Object, ? extends Result> obj = (Actor2_Test<Object, ? extends Result>) test.newInstance();
-                async(new Actor2_Runner(opts, obj, collector, pool));
-            }
-
-            if (Actor3_Test.class.isAssignableFrom(test)) {
-                @SuppressWarnings("unchecked")
-                Actor3_Test<Object, ? extends Result> obj = (Actor3_Test<Object, ? extends Result>) test.newInstance();
-                async(new Actor3_Runner(opts, obj, collector, pool));
-            }
-
-            if (Actor4_Test.class.isAssignableFrom(test)) {
-                @SuppressWarnings("unchecked")
-                Actor4_Test<Object, ? extends Result> obj = (Actor4_Test<Object, ? extends Result>) test.newInstance();
-                async(new Actor4_Runner(opts, obj, collector, pool));
-            }
-
-            if (TerminationTest.class.isAssignableFrom(test)) {
-                if (!alreadyForked && !opts.shouldNeverFork()) {
-                    for (int f = 0; f < opts.getForks(); f++) {
-                        runForked(opts, test, collector);
-                    }
-                } else {
-                    @SuppressWarnings("unchecked")
-                    TerminationTest<Object> obj = (TerminationTest<Object>) test.newInstance();
-                    async(new TerminationRunner<Object>(opts, obj, collector, pool));
-                }
-            }
-        }
-
-    }
-
-    public Collection<String> getSeparateExecutionCommand(Options opts, String test) {
-        Properties props = System.getProperties();
-        String javaHome = (String) props.get("java.home");
-        String separator = File.separator;
-        String osName = props.getProperty("os.name");
-        boolean isOnWindows = osName.contains("indows");
-        String platformSpecificBinaryPostfix = isOnWindows ? ".exe" : "";
-
-        String classPath = (String) props.get("java.class.path");
-
-        if (isOnWindows) {
-            classPath = '"' + classPath + '"';
-        }
-
-        // else find out which one parent is and use that
-        StringBuilder javaExecutable = new StringBuilder();
-        javaExecutable.append(javaHome);
-        javaExecutable.append(separator);
-        javaExecutable.append("bin");
-        javaExecutable.append(separator);
-        javaExecutable.append("java");
-        javaExecutable.append(platformSpecificBinaryPostfix);
-        String javaExecutableString = javaExecutable.toString();
-
-
-        // else use same jvm args given to this runner
-        RuntimeMXBean RuntimemxBean = ManagementFactory.getRuntimeMXBean();
-        List<String> args = RuntimemxBean.getInputArguments();
-
-        // assemble final process command
-
-        List<String> command = new ArrayList<String>();
-        command.add(javaExecutableString);
-
-        command.addAll(args);
-
-        command.add("-cp");
-        command.add(classPath);
-        String appendJvmArgs = opts.getAppendJvmArgs();
-        if (appendJvmArgs.length() > 0) {
-            command.addAll(Arrays.asList(appendJvmArgs.split("\\s")));
-        }
-        command.add(ForkedMain.class.getName());
-        command.addAll(opts.buildForkedCmdLine());
-        command.add("-t");
-        command.add(test);
-
-        command.add("--hostName");
-        command.add(networkCollector.getHost());
-
-        command.add("--hostPort");
-        command.add(String.valueOf(networkCollector.getPort()));
-
-        return command;
-    }
-
-    static <T> SortedSet<Class<? extends T>> filterTests(final String filter, Class<T> klass) {
-        SortedSet<Class<? extends T>> s = new TreeSet<Class<? extends T>>(new Comparator<Class<? extends T>>() {
-            @Override
-            public int compare(Class<? extends T> o1, Class<? extends T> o2) {
-                return o1.getName().compareTo(o2.getName());
-            }
-        });
-
-        // speculatively handle the case when there is a direct hit
-        try {
-            @SuppressWarnings("unchecked")
-            Class<? extends T> k = (Class<? extends T>) Class.forName(filter);
-            if (klass.isAssignableFrom(k)) {
-                s.add(k);
-            }
-
-            return s;
-        } catch (ClassNotFoundException e) {
-            // continue
-        }
-
-        for (Class<?> c : Reflections.lookupClassesImplementing(klass, filter)) {
-            @SuppressWarnings("unchecked")
-            Class<? extends T> c1 = (Class<? extends T>) c;
-            s.add(c1);
-        }
-
-        return s;
-    }
-
-}
\ No newline at end of file
--- a/harness/src/main/java/org/openjdk/jcstress/Main.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +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.
- */
-package org.openjdk.jcstress;
-
-import org.openjdk.jcstress.tests.ConcurrencyTest;
-import org.openjdk.jcstress.util.ContendedSupport;
-import org.openjdk.jcstress.util.VMSupport;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintStream;
-import java.net.URL;
-import java.util.jar.Attributes;
-import java.util.jar.Manifest;
-
-/**
- * Main entry point.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class Main {
-
-    public static void main(String[] args) throws Exception {
-        System.out.println("Java Concurrency Stress Tests");
-        System.out.println("---------------------------------------------------------------------------------");
-        printVersion(System.out);
-        System.out.println();
-
-        Options opts = new Options(args);
-        if (!opts.parse()) {
-            System.exit(1);
-        }
-
-        if (opts.shouldList()) {
-            for (Class<? extends ConcurrencyTest> test : org.openjdk.jcstress.JCStress.filterTests(opts.getTestFilter(), ConcurrencyTest.class)) {
-                System.out.println(test.getName());
-            }
-        } else {
-            boolean vmSupportInited;
-            try {
-                vmSupportInited = VMSupport.tryInit();
-            } catch (NoClassDefFoundError c) {
-                // expected on JDK 7 and lower
-                vmSupportInited = false;
-            }
-
-            if (!vmSupportInited) {
-                System.out.println("Non-fatal: VM support for online deoptimization is not enabled, tests might miss some issues.\nPossible reasons are:\n" +
-                        "  1) unsupported JDK, only JDK 8+ is supported; \n" +
-                        "  2) -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI are missing; \n" +
-                        "  3) the jcstress JAR is not added to -Xbootclasspath/a\n");
-            } else {
-                System.out.println("VM support is initialized.\n");
-            }
-
-            if (!ContendedSupport.tryContended()) {
-                System.out.println("Non-fatal: VM support for @Contended is not enabled, tests might run slower.\nPossible reasons are:\n" +
-                        "  1) unsupported JDK, only JDK 8+ is supported; \n" +
-                        "  2) -XX:-RestrictContended is missing; \n" +
-                        "  3) the jcstress JAR is not added to -Xbootclasspath/a\n");
-            } else {
-                System.out.println("@Contended is in use.\n");
-            }
-
-            new JCStress().run(opts);
-        }
-    }
-
-    static void printVersion(PrintStream out) {
-        Class clazz = Main.class;
-        String className = clazz.getSimpleName() + ".class";
-        String classPath = clazz.getResource(className).toString();
-        if (!classPath.startsWith("jar")) {
-            return;
-        }
-        String manifestPath = classPath.substring(0, classPath.lastIndexOf("!") + 1) + "/META-INF/MANIFEST.MF";
-        InputStream stream = null;
-        try {
-            stream = new URL(manifestPath).openStream();
-            Manifest manifest = new Manifest(stream);
-            Attributes attr = manifest.getMainAttributes();
-            out.printf("Rev: %s, built by %s with %s at %s\n",
-                    attr.getValue("Implementation-Build"),
-                    attr.getValue("Built-By"),
-                    attr.getValue("Build-Jdk"),
-                    attr.getValue("Build-Time")
-            );
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        } finally {
-            try {
-                if (stream != null) {
-                    stream.close();
-                }
-            } catch (IOException e) {
-                // swallow
-            }
-        }
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/Options.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,418 +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.
- */
-package org.openjdk.jcstress;
-
-import joptsimple.OptionException;
-import joptsimple.OptionParser;
-import joptsimple.OptionSet;
-import joptsimple.OptionSpec;
-
-import java.io.IOException;
-import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-
-/**
- * Options.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class Options {
-    public static final String STATE_FILE = "test.state";
-
-    // the largest test it 4 threads wide
-    private static final int MIN_THREADS = 4;
-
-    private String resultDir;
-    private String testFilter;
-    private int minStride, maxStride;
-    private int time;
-    private int iters;
-    private final String[] args;
-    private boolean shouldYield;
-    private boolean parse;
-    private boolean list;
-    private boolean verbose;
-    private String appendJvmArgs;
-    private int systemCPUs;
-    private int userCPUs;
-    private int forks;
-    private String mode;
-    private String hostName;
-    private Integer hostPort;
-    private boolean forceYield;
-    private boolean userYield;
-    private String resultFile;
-    private int deoptRatio;
-
-    public Options(String[] args) {
-        this.args = args;
-    }
-
-    public boolean parse() throws IOException {
-        OptionParser parser = new OptionParser();
-
-        OptionSpec<String> result = parser.accepts("r", "Destination to put the report into.")
-                .withRequiredArg().ofType(String.class).describedAs("dir");
-
-        OptionSpec<String> parse = parser.accepts("p", "Re-run parser on the result file, skip running tests.")
-                .withOptionalArg().ofType(String.class);
-
-        OptionSpec<Boolean> list = parser.accepts("l", "List the available tests matching the requested settings.")
-                .withOptionalArg().ofType(Boolean.class);
-
-        OptionSpec<String> testFilter = parser.accepts("t", "Regexp selector for tests")
-                .withRequiredArg().ofType(String.class).describedAs("regexp");
-
-        OptionSpec<Integer> minStride = parser.accepts("minStride", "Min internal stride size: balances the synchronization overhead vs. accuracy.")
-                .withRequiredArg().ofType(Integer.class).describedAs("N");
-
-        OptionSpec<Integer> maxStride = parser.accepts("maxStride", "Max internal stride size: balances the synchronization overhead vs. accuracy.")
-                .withRequiredArg().ofType(Integer.class).describedAs("N");
-
-        OptionSpec<Integer> time = parser.accepts("time", "Time per iteration.")
-                .withRequiredArg().ofType(Integer.class).describedAs("ms");
-
-        OptionSpec<Integer> iters = parser.accepts("iters", "Iterations per test.")
-                .withRequiredArg().ofType(Integer.class).describedAs("N");
-
-        OptionSpec<Integer> cpus = parser.accepts("c", "Number of CPUs to use. This value can exceed real CPU count.")
-                .withRequiredArg().ofType(Integer.class).describedAs("N");
-
-        OptionSpec<Integer> sysCpus = parser.accepts("sc", "Number of CPUs in the system. Overrides auto-detection.")
-                .withRequiredArg().ofType(Integer.class).describedAs("N");
-
-        OptionSpec<Boolean> shouldYield = parser.accepts("yield", "Call Thread.yield() in busy-loops.")
-                .withOptionalArg().ofType(Boolean.class);
-
-        OptionSpec<Integer> forks = parser.accepts("f", "Should fork each test N times. (\"0\" to run in the embedded mode, \"-1\" to never fork)")
-                .withOptionalArg().ofType(Integer.class);
-
-        OptionSpec<String> appendJvmArgs = parser.accepts("appendJvmArgs", "Append these arguments to the forked JVM.")
-                .withRequiredArg().ofType(String.class);
-
-        OptionSpec<String> modeStr = parser.accepts("m", "Test mode preset (available options: sanity, quick, default, tough, stress)")
-                .withRequiredArg().ofType(String.class);
-
-        OptionSpec<String> hostName = parser.accepts("hostName", "(internal) Host VM address")
-                .withRequiredArg().ofType(String.class);
-
-        OptionSpec<Integer> hostPort = parser.accepts("hostPort", "(internal) Host VM port")
-                .withRequiredArg().ofType(Integer.class);
-
-        OptionSpec<Integer> deoptRatio = parser.accepts("deoptRatio", "Deoptimize (roughly) every N-th iteration")
-                .withRequiredArg().ofType(Integer.class);
-
-        parser.accepts("v", "Be extra verbose.");
-        parser.accepts("h", "Print this help.");
-
-        OptionSet set;
-        try {
-            set = parser.parse(args);
-        } catch (OptionException e) {
-            System.err.println("ERROR: " + e.getMessage());
-            System.err.println();
-            parser.printHelpOn(System.err);
-            return false;
-        }
-
-        if (set.has("h")) {
-            parser.printHelpOn(System.out);
-            return false;
-        }
-
-        this.resultDir = orDefault(set.valueOf(result), "results/");
-        if (!resultDir.endsWith("/")) {
-            resultDir += "/";
-        }
-
-        this.minStride = orDefault(set.valueOf(minStride), 10);
-        this.maxStride = orDefault(set.valueOf(maxStride), 10000);
-        this.time = orDefault(set.valueOf(time), 1000);
-        this.iters = orDefault(set.valueOf(iters), 5);
-        this.testFilter = orDefault(set.valueOf(testFilter), ".*");
-        this.deoptRatio = orDefault(set.valueOf(deoptRatio), 5);
-
-        this.forks = orDefault(set.valueOf(forks), 1);
-        this.parse = orDefault(set.has(parse), false);
-        if (this.parse) {
-            this.resultFile = set.valueOf(parse);
-        } else {
-            this.resultFile = "jcstress." + System.currentTimeMillis();
-        }
-        this.list = orDefault(set.has(list), false);
-        this.appendJvmArgs = orDefault(set.valueOf(appendJvmArgs), "");
-        this.verbose = orDefault(set.has("v"), false);
-
-        this.hostName = set.valueOf(hostName);
-        this.hostPort = set.valueOf(hostPort);
-
-        if (!set.hasArgument(sysCpus)) {
-            this.systemCPUs = figureOutHotCPUs();
-        } else {
-            this.systemCPUs = set.valueOf(sysCpus);
-        }
-
-        if (!set.hasArgument(cpus)) {
-            this.userCPUs = this.systemCPUs;
-        } else {
-            this.userCPUs = set.valueOf(cpus);
-        }
-        this.userCPUs = Math.max(MIN_THREADS, this.userCPUs);
-
-        if (userCPUs > systemCPUs) {
-            forceYield = true;
-        }
-
-        this.userYield = set.has(shouldYield);
-        this.shouldYield = orDefault(set.valueOf(shouldYield), forceYield);
-
-        mode = orDefault(modeStr.value(set), "default");
-        if (this.mode.equalsIgnoreCase("sanity")) {
-            this.time = 50;
-            this.iters = 1;
-            this.forks = 0;
-        } else
-        if (this.mode.equalsIgnoreCase("quick")) {
-            this.time = 300;
-            this.iters = 5;
-            this.forks = 0;
-        } else
-        if (this.mode.equalsIgnoreCase("default")) {
-            // do nothing
-        } else
-        if (this.mode.equalsIgnoreCase("tough")) {
-            this.time = 5000;
-            this.iters = 10;
-            this.forks = 10;
-        } else
-        if (this.mode.equalsIgnoreCase("stress")) {
-            this.time = 1000;
-            this.iters = 5;
-            this.forks = 100;
-        } else {
-            System.err.println("Unknown test mode: " + this.mode);
-            System.err.println();
-            parser.printHelpOn(System.err);
-            return false;
-        }
-
-        return true;
-    }
-
-    private <T> T orDefault(T t, T def) {
-        return (t != null) ? t : def;
-    }
-
-    /**
-     * Warm up the CPU schedulers, bring all the CPUs online to get the
-     * reasonable estimate of the system capacity.
-     *
-     * @return online CPU count
-     */
-    private int figureOutHotCPUs() {
-        ExecutorService service = Executors.newCachedThreadPool();
-
-        System.out.print("Burning up to figure out the exact CPU count...");
-
-        int warmupTime = 1000;
-        long lastChange = System.currentTimeMillis();
-
-        List<Future<?>> futures = new ArrayList<Future<?>>();
-        futures.add(service.submit(new BurningTask()));
-
-        System.out.print(".");
-
-        int max = 0;
-        while (System.currentTimeMillis() - lastChange < warmupTime) {
-            int cur = Runtime.getRuntime().availableProcessors();
-            if (cur > max) {
-                System.out.print(".");
-                max = cur;
-                lastChange = System.currentTimeMillis();
-                futures.add(service.submit(new BurningTask()));
-            }
-        }
-
-        for (Future<?> f : futures) {
-            System.out.print(".");
-            f.cancel(true);
-        }
-
-        service.shutdown();
-
-        System.out.println(" done!");
-        System.out.println();
-
-        return max;
-    }
-
-    public int getForks() {
-        return forks;
-    }
-
-    public void printSettingsOn(PrintStream out) {
-        if (forks > 0) {
-            out.println("FORKED MODE");
-        } else {
-            out.println("EMBEDDED MODE");
-        }
-        out.printf("  Test preset mode: \"%s\"\n", mode);
-        out.printf("  Writing the test results to \"%s\"\n", resultFile);
-        out.printf("  Parsing results to \"%s\"\n", resultDir);
-        out.printf("  Running each test matching \"%s\" for %d forks, %d iterations, %d ms each\n", getTestFilter(), getForks(), getIterations(), getTime());
-        out.printf("  Solo stride size will be autobalanced within [%d, %d] elements\n", getMinStride(), getMaxStride());
-        out.printf("  Hardware threads in use/available: %d/%d, ", getUserCPUs(), getSystemCPUs());
-        if (userYield) {
-            if (shouldYield) {
-                out.printf("user requested yielding in busy loops.\n");
-            } else {
-                out.printf("user disabled yielding in busy loops.\n");
-            }
-        } else {
-            if (shouldYield) {
-                out.printf("yielding was forced, more threads are requested than available.\n");
-            } else {
-                out.printf("no yielding in use.\n");
-            }
-        }
-
-        out.println();
-    }
-
-    public int deoptRatio() {
-        return deoptRatio;
-    }
-
-    public static class BurningTask implements Runnable {
-
-        @Override
-        public void run() {
-            while (!Thread.interrupted()); // burn;
-        }
-    }
-
-    public Collection<String> buildForkedCmdLine() {
-        // omit -f, -p, -t
-        Collection<String> cmdLine = new ArrayList<String>();
-        cmdLine.add("-r");
-        cmdLine.add(resultDir);
-        cmdLine.add("-minStride");
-        cmdLine.add(Integer.toString(minStride));
-        cmdLine.add("-maxStride");
-        cmdLine.add(Integer.toString(maxStride));
-        cmdLine.add("-time");
-        cmdLine.add(Integer.toString(time));
-        cmdLine.add("-iters");
-        cmdLine.add(Integer.toString(iters));
-        cmdLine.add("-yield");
-        cmdLine.add(Boolean.toString(shouldYield));
-        cmdLine.add("-c");
-        cmdLine.add(Integer.toString(userCPUs));
-        cmdLine.add("-sc");
-        cmdLine.add(Integer.toString(systemCPUs));
-        cmdLine.add("-f");
-        cmdLine.add("0");
-        if (verbose) cmdLine.add("-v");
-
-        return  cmdLine;
-    }
-
-    public int getMinStride() {
-        return minStride;
-    }
-
-    public int getMaxStride() {
-        return maxStride;
-    }
-
-    public String getResultDest() {
-        return resultDir;
-    }
-
-    public int getTime() {
-        return time;
-    }
-
-    public boolean shouldYield() {
-        return shouldYield;
-    }
-
-    public boolean shouldParse() {
-        return parse;
-    }
-
-    public boolean shouldList() {
-        return list;
-    }
-
-    public String getTestFilter() {
-        return testFilter;
-    }
-
-    public boolean shouldFork() {
-        return forks > 0;
-    }
-
-    public boolean shouldNeverFork() {
-        return forks < 0;
-    }
-
-    public int getIterations() {
-        return iters;
-    }
-
-    public String getAppendJvmArgs() {
-        return appendJvmArgs;
-    }
-
-    public boolean isVerbose() {
-        return verbose;
-    }
-
-    public int getUserCPUs() {
-        return userCPUs;
-    }
-
-    public int getSystemCPUs() {
-        return systemCPUs;
-    }
-
-    public String getHostName() {
-        return hostName;
-    }
-
-    public int getHostPort() {
-        return hostPort;
-    }
-
-    public String getResultFile() {
-        return resultFile;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/EndResult.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +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.
- */
-package org.openjdk.jcstress.infra;
-
-import java.io.Serializable;
-
-public class EndResult implements Serializable {
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/Result.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +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.
- */
-package org.openjdk.jcstress.infra;
-
-public interface Result {
-    void reset();
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/Scheduler.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +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.
- */
-package org.openjdk.jcstress.infra;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Semaphore;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Scheduler.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class Scheduler {
-
-    private final Semaphore sentinel;
-
-    private final ExecutorService services = Executors.newCachedThreadPool(new ThreadFactory() {
-        @Override
-        public Thread newThread(Runnable r) {
-            Thread t = new Thread(r);
-            t.setPriority(Thread.MAX_PRIORITY);
-            t.setDaemon(true);
-            return t;
-        }
-    });
-
-    public Scheduler(int totalTokens) {
-        this.sentinel = new Semaphore(totalTokens);
-    }
-
-    public void schedule(final ScheduledTask task) throws InterruptedException {
-        sentinel.acquire(task.getTokens());
-        services.submit(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    task.run();
-                } finally {
-                    sentinel.release(task.getTokens());
-                }
-            }
-        });
-    }
-
-    public void waitFinish() throws InterruptedException {
-        services.shutdown();
-        services.awaitTermination(1, TimeUnit.DAYS);
-    }
-
-    public interface ScheduledTask extends Runnable {
-        int getTokens();
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/State.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +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.
- */
-package org.openjdk.jcstress.infra;
-
-import java.io.Serializable;
-
-/**
- * State line.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class State implements Serializable {
-    private final Object result;
-    private final long count;
-
-    public State(Object result, long count) {
-        this.result = result;
-        this.count = count;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        State state = (State) o;
-
-        if (!result.equals(state.result)) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        return result.hashCode();
-    }
-
-    public String getId() {
-        return String.valueOf(result);
-    }
-
-    public long getCount() {
-        return count;
-    }
-
-    public Object getKey() {
-        return result;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/Status.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +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.
- */
-package org.openjdk.jcstress.infra;
-
-/**
- * Test status.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public enum Status {
-
-    NORMAL(0),
-    API_MISMATCH(1),
-    CHECK_TEST_ERROR(2),
-    TIMEOUT_ERROR(3),
-    TEST_ERROR(4),
-    VM_ERROR(5);
-
-    private int severity;
-
-    Status(int severity) {
-        this.severity = severity;
-    }
-
-    public Status combine(Status other) {
-        return severity >= other.severity ? this : other;
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/collectors/DiskReadCollector.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +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.
- */
-package org.openjdk.jcstress.infra.collectors;
-
-import java.io.EOFException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-
-/**
- * Reads test state from the file.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class DiskReadCollector {
-
-    private final ObjectInputStream ois;
-    private final TestResultCollector collector;
-    private final FileInputStream fis;
-
-    public DiskReadCollector(String fileName, TestResultCollector collector) throws IOException {
-        this.collector = collector;
-        File file = new File(fileName);
-        fis = new FileInputStream(file);
-        ois = new ObjectInputStream(fis);
-    }
-
-    public void dump() throws IOException, ClassNotFoundException {
-        Object o;
-        try {
-            while ((o = ois.readObject()) != null) {
-                if (o instanceof TestResult) {
-                    collector.add((TestResult) o);
-                }
-            }
-        } catch (EOFException e) {
-            // expected
-        }
-    }
-
-    public void close() {
-        try {
-            ois.close();
-        } catch (IOException e) {
-            // expected
-        }
-
-        try {
-            fis.close();
-        } catch (IOException e) {
-            // expected
-        }
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/collectors/DiskWriteCollector.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +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.
- */
-package org.openjdk.jcstress.infra.collectors;
-
-import org.openjdk.jcstress.util.Environment;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-
-/**
- * Dumps the test results to the disk.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class DiskWriteCollector implements TestResultCollector {
-
-    private final FileOutputStream fos;
-    private final ObjectOutputStream oos;
-    private int frames;
-
-    public DiskWriteCollector(String fileName) throws IOException {
-        File file = new File(fileName);
-        fos = new FileOutputStream(file);
-        oos = new ObjectOutputStream(fos);
-    }
-
-    @Override
-    public void add(TestResult result) {
-        synchronized (this) {
-            try {
-                // reset every once in a while to keep OIS away
-                // from leaking the object cache.
-                if ((frames++ & 0xFFF) == 0) {
-                    oos.reset();
-                }
-
-                result.setEnv(Environment.getInstance());
-
-                oos.writeObject(result);
-                oos.flush();
-                fos.flush();
-            } catch (IOException e) {
-                // expect
-            }
-        }
-    }
-
-    public void close() {
-        synchronized (this) {
-            try {
-                oos.flush();
-            } catch (IOException e) {
-                // expect
-            }
-
-            try {
-                oos.close();
-            } catch (IOException e) {
-                // expect
-            }
-
-            try {
-                fos.flush();
-            } catch (IOException e) {
-                // expect
-            }
-        }
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/collectors/InProcessCollector.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +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.
- */
-package org.openjdk.jcstress.infra.collectors;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class InProcessCollector implements TestResultCollector {
-
-    private final List<TestResult> results = Collections.synchronizedList(new ArrayList<TestResult>());
-
-    @Override
-    public void add(TestResult result) {
-        results.add(result);
-    }
-
-    public Collection<TestResult> getTestResults() {
-        return results;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/collectors/MuxCollector.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +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.
- */
-package org.openjdk.jcstress.infra.collectors;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Multiplexes multiple collectors.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class MuxCollector implements TestResultCollector {
-
-    private final List<TestResultCollector> collectors = new ArrayList<TestResultCollector>();
-
-    public MuxCollector(TestResultCollector[] args) {
-        collectors.addAll(Arrays.asList(args));
-    }
-
-    public static TestResultCollector of(TestResultCollector... args) {
-        return new MuxCollector(args);
-    }
-
-    @Override
-    public void add(TestResult result) {
-        for (TestResultCollector coll : collectors) {
-            coll.add(result);
-        }
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/collectors/NetworkInputCollector.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +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.
- */
-package org.openjdk.jcstress.infra.collectors;
-
-import org.openjdk.jcstress.infra.EndResult;
-
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InterruptedIOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectStreamException;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketException;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Receives the test results over the network.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class NetworkInputCollector {
-
-    private final Acceptor acceptor;
-    private final List<Reader> registeredReaders;
-    private final TestResultCollector out;
-
-    public NetworkInputCollector(TestResultCollector out) throws IOException {
-        this.out = out;
-
-        registeredReaders = Collections.synchronizedList(new ArrayList<Reader>());
-
-        acceptor = new Acceptor();
-        acceptor.start();
-    }
-
-    public void terminate() {
-        acceptor.close();
-
-        for (Reader r : registeredReaders) {
-            r.close();
-        }
-
-        try {
-            acceptor.join();
-            for (Reader r : registeredReaders) {
-                r.join();
-            }
-        } catch (InterruptedException e) {
-            // ignore
-        }
-    }
-
-    public void waitFinish() {
-        for (Iterator<Reader> iterator = registeredReaders.iterator(); iterator.hasNext(); ) {
-            Reader r = iterator.next();
-            try {
-                r.join();
-                iterator.remove();
-            } catch (InterruptedException e) {
-                // ignore
-            }
-        }
-    }
-
-    private final class Acceptor extends Thread {
-
-        private final ServerSocket server;
-
-        public Acceptor() throws IOException {
-            server = new ServerSocket(0);
-        }
-
-        @Override
-        public void run() {
-            try {
-                while (!Thread.interrupted()) {
-                    Socket clientSocket = server.accept();
-                    Reader r = new Reader(clientSocket);
-                    registeredReaders.add(r);
-                    r.start();
-                }
-            } catch (SocketException e) {
-                // assume this is "Socket closed", return
-            } catch (IOException e) {
-                throw new IllegalStateException(e);
-            } finally {
-                close();
-            }
-        }
-
-        public String getHost() {
-            try {
-                return InetAddress.getLocalHost().getHostAddress();
-            } catch (UnknownHostException e) {
-                throw new IllegalStateException("Unable to resolve local host", e);
-            }
-        }
-
-        public int getPort() {
-            return server.getLocalPort();
-        }
-
-        public void close() {
-            try {
-                server.close();
-            } catch (IOException e) {
-                // do nothing
-            }
-        }
-    }
-
-    public String getHost() {
-        return acceptor.getHost();
-    }
-
-    public int getPort() {
-        return acceptor.getPort();
-    }
-
-    private final class Reader extends Thread {
-        private final InputStream is;
-        private final Socket socket;
-        private ObjectInputStream ois;
-
-        public Reader(Socket socket) throws IOException {
-            this.socket = socket;
-            this.is = socket.getInputStream();
-        }
-
-        @Override
-        public void run() {
-            try {
-                // late OIS initialization, otherwise we'll block reading the header
-                ois = new ObjectInputStream(is);
-
-                Object obj;
-                while ((obj = ois.readObject()) != null) {
-                    if (obj instanceof EndResult) return;
-
-                    if (obj instanceof TestResult) {
-                        out.add((TestResult) obj);
-                    }
-                }
-            } catch (EOFException e) {
-                // expect
-            } catch (ObjectStreamException e) {
-                throw new IllegalStateException(e);
-            } catch (InterruptedIOException e) {
-                throw new IllegalStateException(e);
-            } catch (IOException e) {
-                throw new IllegalStateException(e);
-            } catch (ClassNotFoundException e) {
-                throw new IllegalStateException(e);
-            } finally {
-                close();
-            }
-        }
-
-        public void close() {
-            try {
-                ois.close();
-            } catch (IOException e) {
-                // ignore
-            }
-
-            try {
-                is.close();
-            } catch (IOException e) {
-                // ignore
-            }
-
-            try {
-                socket.close();
-            } catch (IOException e) {
-                // ignore
-            }
-        }
-
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/collectors/NetworkOutputCollector.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +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.
- */
-package org.openjdk.jcstress.infra.collectors;
-
-import org.openjdk.jcstress.infra.EndResult;
-
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.net.Socket;
-
-/**
- * Sends the test results over the network.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class NetworkOutputCollector implements TestResultCollector {
-
-    private final ObjectOutputStream oos;
-    private final Socket clientSocket;
-
-    public NetworkOutputCollector(String hostName, int hostPort) throws IOException {
-        this.clientSocket = new Socket(hostName, hostPort);
-        this.oos = new ObjectOutputStream(clientSocket.getOutputStream());
-    }
-
-    @Override
-    public void add(TestResult result) {
-        try {
-            oos.writeObject(result);
-            oos.flush();
-        } catch (IOException e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
-    public void close() {
-        try {
-            oos.writeObject(new EndResult());
-            oos.flush();
-        } catch (IOException e) {
-            // do nothing
-        }
-
-        try {
-            oos.close();
-        } catch (IOException e) {
-            // do nothing
-        }
-
-        try {
-            clientSocket.close();
-        } catch (IOException e) {
-            // do nothing
-        }
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/collectors/TestResult.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +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.
- */
-package org.openjdk.jcstress.infra.collectors;
-
-import org.openjdk.jcstress.infra.State;
-import org.openjdk.jcstress.infra.Status;
-import org.openjdk.jcstress.util.Environment;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-/**
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class TestResult implements Serializable {
-
-    private static final String VM_ID = UUID.randomUUID().toString();
-
-    private final String vmID;
-    private final String name;
-    private final Map<State, State> states;
-    private volatile Environment env;
-    private final Status status;
-    private final List<String> auxData;
-
-    public TestResult(String name, Status status) {
-        this.vmID = VM_ID;
-        this.name = name;
-        this.status = status;
-        this.states = new HashMap<State, State>();
-        this.auxData = new ArrayList<String>();
-    }
-
-    public void addState(Object result, long count) {
-        State ns = new State(result, count);
-        State os = states.get(ns);
-        if (os != null) {
-            ns = new State(result, count + os.getCount());
-        }
-        states.put(ns, ns);
-    }
-
-    public void addAuxData(String data) {
-        auxData.add(data);
-    }
-
-    public void setEnv(Environment e) {
-        env = e;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public Collection<State> getStates() {
-        return states.values();
-    }
-
-    public Environment getEnv() {
-        return env;
-    }
-
-    public Status status() {
-        return status;
-    }
-
-    public String getVmID() {
-        return vmID;
-    }
-
-    public List<String> getAuxData() {
-        return auxData;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/collectors/TestResultCollector.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +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.
- */
-package org.openjdk.jcstress.infra.collectors;
-
-/**
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public interface TestResultCollector {
-    void add(TestResult result);
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/grading/ConsoleReportPrinter.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,337 +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.
- */
-package org.openjdk.jcstress.infra.grading;
-
-import org.openjdk.jcstress.Options;
-import org.openjdk.jcstress.infra.State;
-import org.openjdk.jcstress.infra.collectors.TestResult;
-import org.openjdk.jcstress.infra.collectors.TestResultCollector;
-import org.openjdk.jcstress.schema.descr.Case;
-import org.openjdk.jcstress.schema.descr.ExpectType;
-import org.openjdk.jcstress.schema.descr.Test;
-
-import javax.xml.bind.JAXBException;
-import java.io.FileNotFoundException;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicLong;
-
-/**
- * Prints the test results to the console.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class ConsoleReportPrinter extends DescriptionReader implements TestResultCollector {
-
-    private final boolean verbose;
-    private final Options opts;
-    private final PrintWriter output;
-    private final int expectedTests;
-    private final int expectedIterations;
-    private final int expectedForks;
-
-    private AtomicLong observedResults = new AtomicLong();
-    private AtomicLong observedCount = new AtomicLong();
-
-    private final ConcurrentMap<String, TestProgress> testsProgress = new ConcurrentHashMap<String, TestProgress>();
-    private final int totalExpectedResults;
-
-    private long firstTest;
-
-    public ConsoleReportPrinter(Options opts, PrintWriter pw, int expectedTests) throws JAXBException, FileNotFoundException {
-        super();
-        this.opts = opts;
-        this.output = pw;
-        this.expectedTests = expectedTests;
-        this.expectedForks = opts.getForks();
-        this.expectedIterations = opts.getIterations();
-        this.totalExpectedResults = expectedTests * opts.getIterations() * (opts.getForks() > 0 ? opts.getForks() : 1);
-        verbose = opts.isVerbose();
-    }
-
-    @Override
-    public void add(TestResult r) {
-        if (firstTest == 0) {
-            firstTest = System.nanoTime();
-        }
-
-        TestProgress e = testsProgress.get(r.getName());
-        if (e == null) {
-            e = new TestProgress(r);
-            TestProgress exist = testsProgress.putIfAbsent(r.getName(), e);
-            e = (exist != null) ? exist : e;
-        }
-
-        if (opts.getForks() > 0) {
-            e.enregisterVM(r.getVmID());
-        } else {
-            e.enregisterVM(null);
-        }
-
-        observedResults.incrementAndGet();
-
-        int totalCount = 0;
-        for (State s : r.getStates()) {
-            totalCount += s.getCount();
-        }
-        observedCount.addAndGet(totalCount);
-
-        if (verbose) {
-            output.println();
-            parseVerbose(output, r);
-        } else {
-            parseSummary(output, r);
-        }
-    }
-
-    private void parseSummary(PrintWriter output, TestResult r) {
-        switch (r.status()) {
-            case TIMEOUT_ERROR:
-                printLine(output, "TIMEOUT", r);
-                return;
-            case CHECK_TEST_ERROR:
-            case TEST_ERROR:
-                output.println();
-                printLine(output, "ERROR", r);
-                for (String data : r.getAuxData()) {
-                    output.println(data);
-                }
-                output.println();
-                return;
-            case VM_ERROR:
-                output.println();
-                printLine(output, "VM ERROR", r);
-                for (String data : r.getAuxData()) {
-                    output.println(data);
-                }
-                output.println();
-                return;
-            case API_MISMATCH:
-                printLine(output, "SKIPPED", r);
-                return;
-            case NORMAL:
-                Test test = testDescriptions.get(r.getName());
-                if (test == null) {
-                    output.println();
-                    printLine(output, "UNKNOWN", r);
-                    parseVerbose(output, r);
-                    output.println();
-                } else {
-                    TestGrading grading = new TestGrading(r, test);
-                    if (grading.isPassed) {
-                        printLine(output, "OK", r);
-                    } else {
-                        output.println();
-                        printLine(output, "FAILED", r);
-                        parseVerbose(output, r);
-                        output.println();
-                    }
-                }
-                break;
-            default:
-                throw new IllegalStateException("Illegal status: " + r.status());
-        }
-    }
-
-    private PrintWriter printLine(PrintWriter output, String label, TestResult r) {
-        return output.printf(" (ETA: %10s) (R: %s) (T:%4d/%d) (F:%2d/%d) (I:%2d/%d) %10s %s\n",
-                computeETA(),
-                computeSpeed(),
-                testsProgress.size(), expectedTests, testsProgress.get(r.getName()).getVMindex(r.getVmID()), expectedForks, testsProgress.get(r.getName()).getIteration(r.getVmID()), expectedIterations,
-                "[" + label + "]", chunkName(r.getName()));
-    }
-
-    private String computeSpeed() {
-        long timeSpent = System.nanoTime() - firstTest;
-        return String.format("%3.2E", 1.0 * TimeUnit.SECONDS.toNanos(1) * observedCount.get() / timeSpent);
-    }
-
-    private String computeETA() {
-        long timeSpent = System.nanoTime() - firstTest;
-        long nsToGo = (long)(timeSpent * (1.0 * totalExpectedResults / observedResults.get() - 1));
-        if (nsToGo > 0) {
-            String result = "";
-            long days = TimeUnit.NANOSECONDS.toDays(nsToGo);
-            if (days > 0) {
-                result += days + "d+";
-                nsToGo -= TimeUnit.DAYS.toNanos(days);
-            }
-            long hours = TimeUnit.NANOSECONDS.toHours(nsToGo);
-            nsToGo -= TimeUnit.HOURS.toNanos(hours);
-
-            long minutes = TimeUnit.NANOSECONDS.toMinutes(nsToGo);
-            nsToGo -= TimeUnit.MINUTES.toNanos(minutes);
-
-            long seconds = TimeUnit.NANOSECONDS.toSeconds(nsToGo);
-
-            result += String.format("%02d:%02d:%02d", hours, minutes, seconds);
-            return result;
-        } else {
-            return "now";
-        }
-    }
-
-    private String chunkName(String name) {
-        return name.replace("org.openjdk.jcstress.tests", "o.o.j.t");
-    }
-
-    private void parseVerbose(PrintWriter output, TestResult r) {
-        int len = 35;
-
-        Test test = testDescriptions.get(r.getName());
-        if (test == null) {
-            output.printf("%" + len + "s %15s %18s %-20s\n", "Observed state", "Occurrences", "Expectation", "Interpretation");
-            for (State s : r.getStates()) {
-                    output.printf("%" + len + "s (%,13d) %18s %-40s\n",
-                            cutoff(s.getId(), len),
-                            s.getCount(),
-                            ExpectType.UNKNOWN,
-                            "N/A");
-            }
-
-            return;
-        }
-
-        output.printf("%" + len + "s %15s %18s %-20s\n", "Observed state", "Occurrences", "Expectation", "Interpretation");
-
-        List<State> unmatchedStates = new ArrayList<State>();
-        unmatchedStates.addAll(r.getStates());
-        for (Case c : test.getCase()) {
-
-            boolean matched = false;
-
-            for (State s : r.getStates()) {
-                if (c.getMatch().contains(s.getId())) {
-                    // match!
-                    output.printf("%" + len + "s (%,13d) %18s %-60s\n",
-                            cutoff(s.getId(), len),
-                            s.getCount(),
-                            c.getExpect(),
-                            cutoff(c.getDescription(), 60));
-                    matched = true;
-                    unmatchedStates.remove(s);
-                }
-            }
-
-            if (!matched) {
-                for (String m : c.getMatch()) {
-                    output.printf("%" + len + "s (%,13d) %18s %-60s\n",
-                            cutoff(m, len),
-                            0,
-                            c.getExpect(),
-                            cutoff(c.getDescription(), 60));
-                }
-            }
-        }
-
-        for (State s : unmatchedStates) {
-            output.printf("%" + len + "s (%,13d) %18s %-60s\n",
-                    cutoff(s.getId(), len),
-                    s.getCount(),
-                    test.getUnmatched().getExpect(),
-                    cutoff(test.getUnmatched().getDescription(), 60));
-        }
-
-        output.println();
-    }
-
-    private static String cutoff(String src, int len) {
-        while (src.contains("  ")) {
-            src = src.replaceAll("  ", " ");
-        }
-        String trim = src.replaceAll("\n", "").trim();
-        String substring = trim.substring(0, Math.min(len - 3, trim.length()));
-        if (!substring.equals(trim)) {
-            return substring + "...";
-        } else {
-            return substring;
-        }
-    }
-
-    private static class TestProgress {
-        private final String name;
-
-        private int currentVM;
-        private final Map<String, Integer> vmIDs = new HashMap<String, Integer>();
-        private final Map<String, Integer> iterations = new HashMap<String, Integer>();
-
-        public TestProgress(TestResult result){
-            this.name = result.getName();
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (this == o) return true;
-            if (o == null || getClass() != o.getClass()) return false;
-
-            TestProgress that = (TestProgress) o;
-
-            if (!name.equals(that.name)) return false;
-
-            return true;
-        }
-
-        @Override
-        public int hashCode() {
-            return name.hashCode();
-        }
-
-        public void enregisterVM(String vmID) {
-            if (vmID == null) return;
-            synchronized (this) {
-                Integer id = vmIDs.get(vmID);
-                if (id == null) {
-                    vmIDs.put(vmID, ++currentVM);
-                }
-                Integer iters = iterations.get(vmID);
-                if (iters == null) {
-                    iters = 0;
-                }
-                iterations.put(vmID, ++iters);
-            }
-        }
-
-        public int getVMindex(String vmID) {
-            synchronized (this) {
-                Integer id = vmIDs.get(vmID);
-                return id != null ? id : 0;
-            }
-        }
-
-        public int getIteration(String vmID) {
-            synchronized (this) {
-                Integer iters = iterations.get(vmID);
-                return iters != null ? iters : 0;
-            }
-        }
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/grading/DescriptionReader.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,174 +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.
- */
-package org.openjdk.jcstress.infra.grading;
-
-import org.openjdk.jcstress.schema.descr.Case;
-import org.openjdk.jcstress.schema.descr.ObjectFactory;
-import org.openjdk.jcstress.schema.descr.Template;
-import org.openjdk.jcstress.schema.descr.Test;
-import org.openjdk.jcstress.schema.descr.Testsuite;
-import org.openjdk.jcstress.util.Reflections;
-import org.xml.sax.SAXException;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.validation.SchemaFactory;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-/**
- * Basic reporter class which is responsible for reading test descriptions.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class DescriptionReader {
-
-    protected final Map<String, Test> testDescriptions;
-    private final Unmarshaller testSuiteUnmarshaller;
-
-    public DescriptionReader() {
-        testDescriptions = new HashMap<String, Test>();
-        try {
-            SchemaFactory sf = SchemaFactory.newInstance(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
-
-            JAXBContext jc1 = JAXBContext.newInstance(Testsuite.class.getPackage().getName());
-
-            testSuiteUnmarshaller = jc1.createUnmarshaller();
-            testSuiteUnmarshaller.setSchema(sf.newSchema(getClass().getResource("/xsd/descriptions/test-descriptions.xsd")));
-
-            readDescriptions();
-        } catch (SAXException e) {
-            throw new IllegalStateException(e);
-        } catch (JAXBException e) {
-            throw new IllegalStateException(e);
-        }
-    }
-
-    protected void readDescriptions() throws JAXBException {
-        for (String res : Reflections.getResources("org/openjdk/jcstress/desc", "xml")) {
-            loadDescription(res);
-        }
-    }
-
-    private void loadDescription(String name)  {
-        Testsuite suite;
-        try {
-            suite = unmarshalTestsuite(this.getClass().getResourceAsStream("/" + name));
-        } catch (JAXBException e) {
-            throw new IllegalStateException(name + ": " + e.getMessage(), e);
-        }
-
-        Map<String, Template> templates = new HashMap<String, Template>();
-        for (Template t : suite.getTemplate()) {
-            templates.put(t.getName(), t);
-        }
-
-        for (Test t : suite.getTest()) {
-            if (t.getTemplate() != null && !t.getTemplate().isEmpty()) {
-                Template template = templates.get(t.getTemplate());
-                if (template == null) {
-                    throw new IllegalStateException(name + ": template \"" + t.getTemplate() + "\" is not found");
-                }
-                mergeTemplate(t, template);
-            }
-            testDescriptions.put(t.getName(), t);
-        }
-    }
-
-    private void splitCases(Collection<Case> cases) {
-        List<Case> newCases = new ArrayList<Case>();
-        for (Case c : cases) {
-            for (String match : c.getMatch()) {
-                Case newCase = new Case();
-                newCase.getMatch().clear();
-                newCase.getMatch().add(match);
-                newCase.setDescription(c.getDescription());
-                newCase.setExpect(c.getExpect());
-                newCase.setRefs(c.getRefs());
-                newCases.add(newCase);
-            }
-        }
-        cases.clear();
-        cases.addAll(newCases);
-    }
-
-    private void mergeTemplate(Test t, Template template) {
-        if (t.getContributedBy() == null) t.setContributedBy(template.getContributedBy());
-        if (t.getDescription() == null) t.setDescription(template.getDescription());
-
-        // split the matches
-        splitCases(t.getCase());
-        splitCases(template.getCase());
-
-        // merge the matches
-        Collection<Case> newCases = new ArrayList<Case>();
-
-        Set<String> fulfilledMatches = new HashSet<String>();
-        for (Case c : t.getCase()) {
-            fulfilledMatches.add(c.getMatch().get(0));
-            newCases.add(c);
-        }
-
-        for (Case c : template.getCase()) {
-            if (fulfilledMatches.add(c.getMatch().get(0))) {
-                newCases.add(c);
-            }
-        }
-
-        t.getCase().clear();
-        t.getCase().addAll(newCases);
-
-        // merge unmatched
-        if (t.getUnmatched() == null) {
-            t.setUnmatched(template.getUnmatched());
-        }
-
-        // merge refs
-        Set<String> urls = new HashSet<String>();
-        if (t.getRefs() == null) {
-            t.setRefs(new ObjectFactory().createRef());
-        }
-        urls.addAll(t.getRefs().getUrl());
-        if (template.getRefs() != null) {
-            urls.addAll(template.getRefs().getUrl());
-        }
-        t.getRefs().getUrl().clear();
-        t.getRefs().getUrl().addAll(urls);
-    }
-
-    @SuppressWarnings("unchecked")
-    public Testsuite unmarshalTestsuite(InputStream inputStream) throws JAXBException {
-        return (Testsuite) testSuiteUnmarshaller.unmarshal(inputStream);
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/grading/ExceptionReportPrinter.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +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.
- */
-package org.openjdk.jcstress.infra.grading;
-
-
-import org.openjdk.jcstress.Options;
-import org.openjdk.jcstress.infra.State;
-import org.openjdk.jcstress.infra.Status;
-import org.openjdk.jcstress.infra.collectors.InProcessCollector;
-import org.openjdk.jcstress.infra.collectors.TestResult;
-import org.openjdk.jcstress.schema.descr.Test;
-import org.openjdk.jcstress.util.HashMultimap;
-import org.openjdk.jcstress.util.LongHashMultiset;
-import org.openjdk.jcstress.util.Multimap;
-import org.openjdk.jcstress.util.TreeMultimap;
-
-import javax.xml.bind.JAXBException;
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- * Exception report.
- *
- * Throws deferred test exceptions, if any.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class ExceptionReportPrinter extends DescriptionReader {
-
-    private final List<String> failures;
-    private final InProcessCollector collector;
-
-    public ExceptionReportPrinter(Options opts, InProcessCollector collector) throws JAXBException, FileNotFoundException {
-        super();
-        this.collector = collector;
-        failures = new ArrayList<String>();
-    }
-
-    public void parse() throws FileNotFoundException, JAXBException {
-        Map<String, TestResult> results = new TreeMap<String, TestResult>();
-
-        {
-            Multimap<String, TestResult> multiResults = new HashMultimap<String, TestResult>();
-            for (TestResult r : collector.getTestResults()) {
-                multiResults.put(r.getName(), r);
-            }
-
-            for (String name : multiResults.keys()) {
-                Collection<TestResult> mergeable = multiResults.get(name);
-
-                LongHashMultiset<State> stateCounts = new LongHashMultiset<State>();
-
-                Status status = Status.NORMAL;
-                for (TestResult r : mergeable) {
-                    status = status.combine(r.status());
-                    for (State s : r.getStates()) {
-                        stateCounts.add(s, s.getCount());
-                    }
-                }
-
-                TestResult root = new TestResult(name, status);
-
-                for (State s : stateCounts.keys()) {
-                    root.addState(s.getKey(), stateCounts.count(s));
-                }
-
-                results.put(name, root);
-            }
-        }
-
-        // build prefixes
-        Multimap<String, String> packages = new TreeMultimap<String, String>();
-        for (String k : results.keySet()) {
-            String pack = k.substring(0, k.lastIndexOf("."));
-            packages.put(pack, k);
-        }
-
-        for (String k : packages.keys()) {
-            Collection<String> testNames = packages.get(k);
-            for (String testName : testNames) {
-                Test test = testDescriptions.get(testName);
-                TestResult result = results.get(testName);
-                emitTest(result, test);
-            }
-        }
-
-        // TODO: Once JDK6 is in infamy, refactor to use suppressed exceptions
-        if (!failures.isEmpty()) {
-            StringBuilder sb = new StringBuilder();
-            for (String f : failures) {
-                sb.append(f).append("\n");
-            }
-            throw new AssertionError("TEST FAILURES: \n" + sb.toString());
-        }
-    }
-
-    public void emitTest(TestResult result, Test description) throws FileNotFoundException, JAXBException {
-        switch (result.status()) {
-            case CHECK_TEST_ERROR:
-                failures.add(result.getName() + " had failed with the pre-test error.");
-                break;
-            case TEST_ERROR:
-                failures.add(result.getName() + " had failed with the test error.");
-                break;
-            case TIMEOUT_ERROR:
-                failures.add(result.getName() + " had timed out.");
-                break;
-            case VM_ERROR:
-                failures.add(result.getName() + " had failed with the VM error.");
-                break;
-            case NORMAL:
-                if (description != null) {
-                    TestGrading grading = new TestGrading(result, description);
-                    if (!grading.failureMessages.isEmpty()) {
-                        for (String msg : grading.failureMessages) {
-                            failures.add(result.getName() + ": " + msg);
-                        }
-                    }
-                } else {
-                    failures.add("TEST BUG: " + result.getName() + " description is not found.");
-                }
-                break;
-            case API_MISMATCH:
-                // silently ignore
-                break;
-            default:
-                throw new IllegalStateException("Unhandled status: " + result.status());
-        }
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/grading/HTMLReportPrinter.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,669 +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.
- */
-package org.openjdk.jcstress.infra.grading;
-
-
-import org.openjdk.jcstress.Options;
-import org.openjdk.jcstress.infra.State;
-import org.openjdk.jcstress.infra.Status;
-import org.openjdk.jcstress.infra.collectors.InProcessCollector;
-import org.openjdk.jcstress.infra.collectors.TestResult;
-import org.openjdk.jcstress.schema.descr.Case;
-import org.openjdk.jcstress.schema.descr.ExpectType;
-import org.openjdk.jcstress.schema.descr.Test;
-import org.openjdk.jcstress.util.Environment;
-import org.openjdk.jcstress.util.HashMultimap;
-import org.openjdk.jcstress.util.LongHashMultiset;
-import org.openjdk.jcstress.util.Multimap;
-import org.openjdk.jcstress.util.TreeMultimap;
-
-import javax.xml.bind.JAXBException;
-import java.awt.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-/**
- * Prints HTML reports.
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class HTMLReportPrinter extends DescriptionReader {
-
-    private final String resultDir;
-    private final InProcessCollector collector;
-    private int cellStyle = 1;
-
-    public HTMLReportPrinter(Options opts, InProcessCollector collector) throws JAXBException, FileNotFoundException {
-        this.collector = collector;
-        resultDir = opts.getResultDest();
-        new File(resultDir).mkdirs();
-    }
-
-    public void parse() throws FileNotFoundException, JAXBException {
-
-        Map<String, TestResult> results = new TreeMap<String, TestResult>();
-
-        {
-            Multimap<String, TestResult> multiResults = new HashMultimap<String, TestResult>();
-            for (TestResult r : collector.getTestResults()) {
-                multiResults.put(r.getName(), r);
-            }
-
-            for (String name : multiResults.keys()) {
-                Collection<TestResult> mergeable = multiResults.get(name);
-
-                LongHashMultiset<State> stateCounts = new LongHashMultiset<State>();
-
-                List<String> auxData = new ArrayList<String>();
-
-                Status status = Status.NORMAL;
-                Environment env = null;
-                for (TestResult r : mergeable) {
-                    status = status.combine(r.status());
-                    for (State s : r.getStates()) {
-                        stateCounts.add(s, s.getCount());
-                    }
-                    env = r.getEnv();
-                    auxData.addAll(r.getAuxData());
-                }
-
-                TestResult root = new TestResult(name, status);
-
-                for (State s : stateCounts.keys()) {
-                    root.addState(s.getKey(), stateCounts.count(s));
-                }
-
-                root.setEnv(env);
-
-                for (String data : auxData) {
-                    root.addAuxData(data);
-                }
-
-                results.put(name, root);
-            }
-        }
-
-        // build prefixes
-        Multimap<String, String> packages = new TreeMultimap<String, String>();
-        for (String k : results.keySet()) {
-            String pack = k.substring(0, k.lastIndexOf("."));
-            packages.put(pack, k);
-        }
-
-        PrintWriter output = new PrintWriter(resultDir + "/index.html");
-
-        output.println("\n" +
-                "<html>\n" +
-                "<head>\n" +
-                "<title>Java Concurrency Stress test report</title>\n" +
-                " <style type=\"text/css\">\n" +
-                "   table { font-size: 9pt; }\n" +
-                "   a { color: #000000; }\n" +
-                "   .progress { padding: 0px; }\n" +
-                "   .header { text-align: left; }\n" +
-                "   .section1 { font-size: 12pt; background-color: #BDB76B; color: #000000; font-weight: bold;}\n" +
-                "   .section2 { font-size: 12pt; background-color: #F0E68C; color: #000000; font-weight: bold;}\n" +
-                "   .cell1 { background-color: #FAFAD2; }\n" +
-                "   .cell2 { background-color: #EEE8AA; }\n" +
-                "   .passedProgress { background-color: #00AA00; color: #FFFFFF; text-align: center; font-weight: bold; }\n" +
-                "   .failedProgress { background-color: #FF0000; color: #FFFFFF; text-align: center; font-weight: bold; }\n" +
-                "   .passed { color: #00AA00; text-align: center; font-weight: bold; }\n" +
-                "   .failed { color: #FF0000; text-align: center; font-weight: bold; }\n" +
-                "   .interesting { color: #0000FF; text-align: center; font-weight: bold; }\n" +
-                "   .spec { color: #AAAA00; text-align: center; font-weight: bold; }\n" +
-                "   .endResult { font-size: 48pt; text-align: center; font-weight: bold; }\n" +
-                " </style>\n" +
-                "</head>\n" +
-                "<body>");
-
-        output.println("<table width=\"100%\" cellspacing=\"20\">");
-        output.println("<tr>");
-        output.println("<td>");
-
-        {
-            int passedCount = 0;
-            int failedCount = 0;
-            int sanityFailedCount = 0;
-            for (String k : packages.keys()) {
-                Collection<String> testNames = packages.get(k);
-                for (String testName : testNames) {
-                    Test test = testDescriptions.get(testName);
-                    TestResult result = results.get(testName);
-                    if (result.status() == Status.NORMAL) {
-                        if (new TestGrading(result, test).isPassed) {
-                            passedCount++;
-                        } else {
-                            failedCount++;
-                        }
-                    } else {
-                        if (result.status() == Status.API_MISMATCH) {
-                            sanityFailedCount++;
-                        } else {
-                            failedCount++;
-                        }
-                    }
-                }
-            }
-
-            int totalCount = passedCount + failedCount;
-            int passedProgress = totalCount > 0 ? (passedCount * 100 / totalCount) : 0;
-            int failedProgress = totalCount > 0 ? (failedCount * 100 / totalCount) : 100;
-
-            if (failedCount > 0) {
-                output.println("<p class=\"endResult failed\">");
-            } else {
-                output.println("<p class=\"endResult passed\">");
-            }
-            output.println("" + passedProgress + "%");
-            if (sanityFailedCount > 0) {
-                output.println(" <span class=\"special\">(" + sanityFailedCount + " tests skipped)</span>");
-            }
-            output.println("</p>");
-
-            output.println("<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\"><tr>");
-            output.println("<td nowrap><b>Overall pass rate:</b> " + passedCount + "/" + (passedCount + failedCount) + "&nbsp;</td>");
-            if (passedProgress > 0) {
-                output.println("<td width=\"" + passedProgress + "%\" class=\"passedProgress\">&nbsp;</td>");
-            }
-            if (failedProgress > 0) {
-                output.println("<td width=\"" + failedProgress + "%\" class=\"failedProgress\">&nbsp;</td>");
-            }
-            output.println("</tr></table>");
-
-            output.println("<br>");
-        }
-        output.println("</td>");
-        output.println("<td width=100>");
-
-        {
-            SortedMap<String, String> env = new TreeMap<String, String>();
-            for (String k : packages.keys()) {
-                for (String testName : packages.get(k)) {
-                    TestResult result = results.get(testName);
-                    if (result != null) {
-                        for (Map.Entry<String, String> kv : result.getEnv().entries().entrySet()) {
-                            String key = kv.getKey();
-                            String value = kv.getValue();
-                            String lastV = env.get(key);
-                            if (lastV == null) {
-                                env.put(key, value);
-                            } else {
-                                // Some VMs have these keys pre-populated with the command line,
-                                // which can have port definitions, PIDs, etc, and naturally
-                                // clash from launch to launch.
-                                if (key.equals("cmdLine")) continue;
-                                if (key.equals("launcher")) continue;
-
-                                if (!lastV.equalsIgnoreCase(value)) {
-                                    System.err.println("Mismatched environment for key = " + key + ", was = " + lastV + ", now = "  + value);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-
-            output.println("<table>");
-            for (Map.Entry<String, String> entry : env.entrySet()) {
-                output.println("<tr>");
-                output.println("<td nowrap>" + entry.getKey() + "</td>");
-                output.println("<td>" + entry.getValue() + "</td>");
-                output.println("</tr>");
-            }
-            output.println("</table>");
-        }
-
-        output.println("</td>");
-        output.println("</tr>");
-        output.println("</table>");
-
-        printFailedTests(results, packages, output);
-        printErrorTests(results, packages, output);
-        printSpecTests(results, packages, output);
-        printInterestingTests(results, packages, output);
-        printAllTests(results, packages, output);
-
-        output.println("</body>");
-        output.println("</html>");
-
-        output.close();
-    }
-
-    private void printFailedTests(Map<String, TestResult> results, Multimap<String, String> packages, PrintWriter output) throws FileNotFoundException, JAXBException {
-        output.println("<h3>FAILED tests:<br>");
-        output.println("&nbsp;Some asserts have been violated.<br>&nbsp;Correct implementations should have none.</h3>");
-        output.println("<table cellspacing=0 cellpadding=0 width=\"100%\">");
-
-        boolean hadAnyTests = false;
-        for (String k : packages.keys()) {
-            Collection<String> testNames = packages.get(k);
-
-            boolean packageEmitted = false;
-            for (String testName : testNames) {
-                Test test = testDescriptions.get(testName);
-                TestResult result = results.get(testName);
-                TestGrading grading = new TestGrading(result, test);
-                if (result.status() == Status.NORMAL && !grading.isPassed) {
-                    if (!packageEmitted) {
-                        emitPackage(output, k);
-                        packageEmitted = true;
-                    }
-                    emitTest(output, result, test);
-                    hadAnyTests = true;
-                }
-            }
-        }
-
-        output.println("</table>");
-        if (!hadAnyTests) {
-            output.println("None!");
-            output.println("<br>");
-        }
-
-        output.println("<br>");
-    }
-
-
-    private void printErrorTests(Map<String, TestResult> results, Multimap<String, String> packages, PrintWriter output) throws FileNotFoundException, JAXBException {
-        output.println("<h3>ERROR tests:<br>");
-        output.println("&nbsp;Tests break for some reason, other than failing the assert.<br>&nbsp;Correct implementations should have none.</h3>");
-        output.println("<table cellspacing=0 cellpadding=0 width=\"100%\">");
-
-        boolean hadAnyTests = false;
-        for (String k : packages.keys()) {
-            Collection<String> testNames = packages.get(k);
-
-            boolean packageEmitted = false;
-            for (String testName : testNames) {
-                Test test = testDescriptions.get(testName);
-                TestResult result = results.get(testName);
-                if (result.status() != Status.NORMAL && result.status() != Status.API_MISMATCH) {
-                    if (!packageEmitted) {
-                        emitPackage(output, k);
-                        packageEmitted = true;
-                    }
-                    emitTestFailure(output, result, test);
-                    hadAnyTests = true;
-                }
-            }
-        }
-
-        output.println("</table>");
-        if (!hadAnyTests) {
-            output.println("None!");
-            output.println("<br>");
-        }
-
-        output.println("<br>");
-    }
-
-    private void printInterestingTests(Map<String, TestResult> results, Multimap<String, String> packages, PrintWriter output) throws FileNotFoundException, JAXBException {
-        output.println("<h3>INTERESTING tests:<br>");
-        output.println("&nbsp;Some interesting behaviors observed.<br>&nbsp;This is for the plain curiosity.</h3>");
-        output.println("<table cellspacing=0 cellpadding=0 width=\"100%\">");
-
-        boolean hadAnyTests = false;
-        for (String k : packages.keys()) {
-            Collection<String> testNames = packages.get(k);
-
-            boolean packageEmitted = false;
-            for (String testName : testNames) {
-                Test test = testDescriptions.get(testName);
-                TestResult result = results.get(testName);
-                TestGrading grading = new TestGrading(result, test);
-                if (grading.hasInteresting) {
-                    if (!packageEmitted) {
-                        emitPackage(output, k);
-                        packageEmitted = true;
-                    }
-                    emitTest(output, result, test);
-                    hadAnyTests = true;
-                }
-            }
-        }
-
-        output.println("</table>");
-        if (!hadAnyTests) {
-            output.println("None!");
-            output.println("<br>");
-        }
-        output.println("<br>");
-    }
-
-    private void printSpecTests(Map<String, TestResult> results, Multimap<String, String> packages, PrintWriter output) throws FileNotFoundException, JAXBException {
-        output.println("<h3>SPEC tests:<br>");
-        output.println("&nbsp;Formally acceptable, but surprising results are observed.<br>&nbsp;Implementations going beyond the minimal requirements should have none.</h3>");
-        output.println("<table cellspacing=0 cellpadding=0 width=\"100%\">");
-
-        boolean hadAnyTests = false;
-        for (String k : packages.keys()) {
-            Collection<String> testNames = packages.get(k);
-
-            boolean packageEmitted = false;
-            for (String testName : testNames) {
-                Test test = testDescriptions.get(testName);
-                TestResult result = results.get(testName);
-                TestGrading grading = new TestGrading(result, test);
-                if (grading.hasSpec) {
-                    if (!packageEmitted) {
-                        emitPackage(output, k);
-                        packageEmitted = true;
-                    }
-                    emitTest(output, result, test);
-                    hadAnyTests = true;
-                }
-            }
-        }
-
-        output.println("</table>");
-        if (!hadAnyTests) {
-            output.println("None!");
-            output.println("<br>");
-        }
-
-        output.println("<br>");
-    }
-
-    private void printAllTests(Map<String, TestResult> results, Multimap<String, String> packages, PrintWriter output) throws FileNotFoundException, JAXBException {
-        output.println("<h3>ALL tests:</h3>");
-        output.println("<table cellspacing=0 cellpadding=0 width=\"100%\">\n" +
-                "<tr>\n" +
-                " <th class=\"header\">Test</th>\n" +
-                " <th class=\"header\">Cycles</th>\n" +
-                " <th class=\"header\">Results</th>\n" +
-                "</tr>");
-
-        for (String k : packages.keys()) {
-            emitPackage(output, k);
-
-            Collection<String> testNames = packages.get(k);
-            for (String testName : testNames) {
-                Test test = testDescriptions.get(testName);
-                TestResult result = results.get(testName);
-                if (result.status() == Status.NORMAL) {
-                    emitTest(output, result, test);
-                } else {
-                    emitTestFailure(output, result, test);
-                }
-
-                PrintWriter local = new PrintWriter(resultDir + "/" + testName + ".html");
-                parseTest(local, result, test);
-                local.close();
-            }
-        }
-
-        output.println("</table>");
-    }
-
-    private void emitPackage(PrintWriter pw, String pack) {
-        pw.println("<tr class=\"section2\">\n" +
-                "   <td><b>" + pack + "</b></td>\n" +
-                "   <td>&nbsp;</td>\n" +
-                "   <td>&nbsp;</td>\n" +
-                "   <td>&nbsp;</td>\n" +
-                "   <td>&nbsp;</td>\n" +
-                "   <td></td>" +
-                "</tr>");
-    }
-
-    public static String cutKlass(String fqname) {
-        return fqname.substring(fqname.lastIndexOf(".") + 1);
-    }
-
-    public void emitTest(PrintWriter output, TestResult result, Test description) throws FileNotFoundException, JAXBException {
-        cellStyle = 3 - cellStyle;
-        output.println("<tr class=\"cell" + cellStyle + "\">");
-        output.println("<td>&nbsp;&nbsp;&nbsp;<a href=\"" + result.getName() + ".html\">" + cutKlass(result.getName()) + "</a></td>");
-        output.printf("<td>> 10<sup>%d</sup></td>", getRoughCount(result));
-        if (description != null) {
-            TestGrading grading = new TestGrading(result, description);
-            if (grading.isPassed) {
-                output.println("<td class=\"passed\">PASSED</td>");
-            } else {
-                output.println("<td class=\"failed\">FAILED</td>");
-            }
-
-            if (grading.hasInteresting) {
-                output.println("<td class=\"interesting\">INTERESTING</td>");
-            } else {
-                output.println("<td class=\"interesting\"></td>");
-            }
-            if (grading.hasSpec) {
-                output.println("<td class=\"spec\">SPEC</td>");
-            } else {
-                output.println("<td class=\"spec\"></td>");
-            }
-            output.println("<td class=\"passed\"></td>");
-        } else {
-            output.println("<td class=\"failed\">MISSING DESCRIPTION</td>");
-            output.println("<td class=\"failed\"></td>");
-            output.println("<td class=\"failed\"></td>");
-            output.println("<td class=\"failed\"></td>");
-        }
-        output.println("</tr>");
-    }
-
-    public void emitTestFailure(PrintWriter output, TestResult result, Test description) throws FileNotFoundException, JAXBException {
-        cellStyle = 3 - cellStyle;
-        output.println("<tr class=\"cell" + cellStyle + "\">");
-        output.println("<td>&nbsp;&nbsp;&nbsp;<a href=\"" + result.getName() + ".html\">" + cutKlass(result.getName()) + "</a></td>");
-        output.println("<td></td>");
-        if (description != null) {
-            switch (result.status()) {
-                case API_MISMATCH:
-                    output.println("<td class=\"interesting\">API MISMATCH</td>");
-                    output.println("<td class=\"interesting\"></td>");
-                    output.println("<td class=\"interesting\"></td>");
-                    output.println("<td class=\"interesting\">Sanity check failed, API mismatch?</td>");
-                    break;
-                case TEST_ERROR:
-                case CHECK_TEST_ERROR:
-                    output.println("<td class=\"failed\">ERROR</td>");
-                    output.println("<td class=\"failed\"></td>");
-                    output.println("<td class=\"failed\"></td>");
-                    output.println("<td class=\"failed\">Error while running the test</td>");
-                    break;
-                case TIMEOUT_ERROR:
-                    output.println("<td class=\"failed\">ERROR</td>");
-                    output.println("<td class=\"failed\"></td>");
-                    output.println("<td class=\"failed\"></td>");
-                    output.println("<td class=\"failed\">Timeout while running the test</td>");
-                    break;
-                case VM_ERROR:
-                    output.println("<td class=\"failed\">VM ERROR</td>");
-                    output.println("<td class=\"failed\"></td>");
-                    output.println("<td class=\"failed\"></td>");
-                    output.println("<td class=\"failed\">Error running the VM</td>");
-                    break;
-            }
-        } else {
-            output.println("<td class=\"failed\">MISSING DESCRIPTION</td>");
-            output.println("<td class=\"failed\"></td>");
-            output.println("<td class=\"failed\"></td>");
-            output.println("<td class=\"failed\"></td>");
-        }
-        output.println("</tr>");
-    }
-
-    public static int getRoughCount(TestResult r) {
-        long sum = 0;
-        for (State s : r.getStates()) {
-            sum += s.getCount();
-        }
-
-        return (int) Math.floor(Math.log10(sum));
-    }
-
-
-    public void parseTest(PrintWriter output, TestResult r, Test test) throws FileNotFoundException, JAXBException {
-        if (test == null) {
-            parseTestWithoutDescription(output, r);
-            return;
-        }
-
-        output.println("<h1>" + r.getName() + "</h1>");
-
-        output.println("<p>" + test.getDescription() + "</p>");
-        output.println("<p><b>Contributed by:</b> " + test.getContributedBy() + "</p>");
-
-        output.println("<table width=100%>");
-        output.println("<tr>");
-        output.println("<th width=250>Observed state</th>");
-        output.println("<th width=50>Occurrence</th>");
-        output.println("<th width=50>Expectation</th>");
-        output.println("<th>Interpretation</th>");
-        output.println("<th width=50>Refs</th>");
-        output.println("</tr>");
-
-        List<State> unmatchedStates = new ArrayList<State>();
-        unmatchedStates.addAll(r.getStates());
-        for (Case c : test.getCase()) {
-
-            boolean matched = false;
-
-            for (State s : r.getStates()) {
-                if (c.getMatch().contains(s.getId())) {
-                    // match!
-                    output.println("<tr bgColor=" + selectHTMLColor(c.getExpect(), s.getCount() == 0) + ">");
-                    output.println("<td>" + s.getId() + "</td>");
-                    output.println("<td align=center>" + s.getCount() + "</td>");
-                    output.println("<td align=center>" + c.getExpect() + "</td>");
-                    output.println("<td>" + c.getDescription() + "</td>");
-                    output.println("<td bgColor='white'>");
-                    List<String> list = (c.getRefs() != null) ? c.getRefs().getUrl() : Collections.<String>emptyList();
-                    for (int i = 0; i < list.size(); i++) {
-                        output.println("<a href=\"" + list.get(i) + "\">[" + (i+1) + "]</a>");
-                    }
-                    output.println("</td>");
-
-                    output.println("</tr>");
-                    matched = true;
-                    unmatchedStates.remove(s);
-                }
-            }
-
-            if (!matched) {
-                for (String m : c.getMatch()) {
-                    output.println("<tr bgColor=" + selectHTMLColor(c.getExpect(), true) + ">");
-                    output.println("<td>" + m + "</td>");
-                    output.println("<td align=center>" + 0 + "</td>");
-                    output.println("<td align=center>" + c.getExpect() + "</td>");
-                    output.println("<td>" + c.getDescription() + "</td>");
-                    output.println("<td bgColor='white'>");
-                    List<String> list = (c.getRefs() != null) ? c.getRefs().getUrl() : Collections.<String>emptyList();
-                    for (int i = 0; i < list.size(); i++) {
-                        output.println("<a href=\"" + list.get(i) + "\">[" + (i+1) + "]</a>");
-                    }
-                    output.println("</td>");
-                    output.println("</tr>");
-                }
-            }
-        }
-
-        for (State s : unmatchedStates) {
-            output.println("<tr bgColor=" + selectHTMLColor(test.getUnmatched().getExpect(), s.getCount() == 0) + ">");
-            output.println("<td>" + s.getId() + "</td>");
-            output.println("<td align=center>" + s.getCount() + "</td>");
-            output.println("<td align=center>" + test.getUnmatched().getExpect() + "</td>");
-            output.println("<td>" + test.getUnmatched().getDescription() + "</td>");
-            output.println("<td bgColor='white'>");
-            List<String> list = (test.getUnmatched().getRefs() != null) ? test.getUnmatched().getRefs().getUrl() : Collections.<String>emptyList();
-            for (int i = 0; i < list.size(); i++) {
-                output.println("<a href=\"" + list.get(i) + "\">[" + (i+1) + "]</a>");
-            }
-            output.println("</td>");
-            output.println("</tr>");
-        }
-
-        output.println("</table>");
-
-        if (!r.getAuxData().isEmpty()) {
-            output.println("<p><b>Auxiliary data</b></p>");
-            output.println("<pre>");
-            for (String data : r.getAuxData()) {
-                output.println(data);
-            }
-            output.println("</pre>");
-            output.println();
-        }
-    }
-
-    private void parseTestWithoutDescription(PrintWriter output, TestResult r) {
-        output.println("<h1>" + r.getName() + "</h1>");
-
-        output.println("<p>No description available for this test</p>");
-
-        output.println("<table width=100%>");
-        output.println("<tr>");
-        output.println("<th width=250>Observed state</th>");
-        output.println("<th width=50>Occurrence</th>");
-        output.println("<th width=50>Expectation</th>");
-        output.println("<th>Interpretation</th>");
-        output.println("<th width=50>Refs</th>");
-        output.println("</tr>");
-
-        for (State s : r.getStates()) {
-            output.println("<tr bgColor=" + selectHTMLColor(ExpectType.UNKNOWN, s.getCount() == 0) + ">");
-            output.println("<td>" + s.getId() + "</td>");
-            output.println("<td align=center>" + s.getCount() + "</td>");
-            output.println("<td align=center>" + ExpectType.UNKNOWN + "</td>");
-            output.println("<td>" + "Unknows state" + "</td>");
-            output.println("</tr>");
-        }
-        output.println("</table>");
-    }
-
-    public String selectHTMLColor(ExpectType type, boolean isZero) {
-        String rgb = Integer.toHexString(selectColor(type, isZero).getRGB());
-        return "#" + rgb.substring(2, rgb.length());
-    }
-
-    public Color selectColor(ExpectType type, boolean isZero) {
-        switch (type) {
-            case ACCEPTABLE:
-                return isZero ? Color.LIGHT_GRAY : Color.GREEN;
-            case FORBIDDEN:
-                return isZero ? Color.LIGHT_GRAY : Color.RED;
-            case ACCEPTABLE_INTERESTING:
-                return isZero ? Color.LIGHT_GRAY : Color.CYAN;
-            case ACCEPTABLE_SPEC:
-                return isZero ? Color.LIGHT_GRAY : Color.YELLOW;
-            case UNKNOWN:
-                return Color.RED;
-            default:
-                throw new IllegalStateException();
-        }
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/grading/TestGrading.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +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.
- */
-package org.openjdk.jcstress.infra.grading;
-
-import org.openjdk.jcstress.infra.State;
-import org.openjdk.jcstress.infra.collectors.TestResult;
-import org.openjdk.jcstress.schema.descr.Case;
-import org.openjdk.jcstress.schema.descr.ExpectType;
-import org.openjdk.jcstress.schema.descr.Test;
-import org.openjdk.jcstress.util.NonNullArrayList;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class TestGrading {
-    public boolean isPassed;
-    public boolean hasInteresting;
-    public boolean hasSpec;
-    public final List<String> failureMessages;
-
-    public TestGrading(TestResult r, Test test) {
-        failureMessages = new NonNullArrayList<String>();
-
-        if (test == null) {
-            isPassed = false;
-            hasInteresting = false;
-            hasSpec = false;
-            failureMessages.add("No test.");
-            return;
-        }
-
-        isPassed = true;
-        hasInteresting = false;
-        hasSpec = false;
-
-        List<State> unmatchedStates = new ArrayList<State>();
-        unmatchedStates.addAll(r.getStates());
-        for (Case c : test.getCase()) {
-            boolean matched = false;
-
-            for (State s : r.getStates()) {
-                if (c.getMatch().contains(s.getId())) {
-                    isPassed &= passed(c.getExpect(), s.getCount());
-                    hasInteresting |= hasInteresting(c.getExpect(), s.getCount());
-                    hasSpec |= hasSpec(c.getExpect(), s.getCount());
-                    failureMessages.add(failureMessage(s.getId(), c.getExpect(), s.getCount()));
-                    matched = true;
-                    unmatchedStates.remove(s);
-                }
-            }
-
-            if (!matched) {
-                isPassed &= passed(c.getExpect(), 0);
-                hasInteresting |= hasInteresting(c.getExpect(), 0);
-                hasSpec |= hasSpec(c.getExpect(), 0);
-                failureMessages.add(failureMessage("N/A", c.getExpect(), 0));
-            }
-        }
-
-        for (State s : unmatchedStates) {
-            isPassed &= passed(test.getUnmatched().getExpect(), s.getCount());
-            hasInteresting |= hasInteresting(test.getUnmatched().getExpect(), s.getCount());
-            hasSpec |= hasSpec(test.getUnmatched().getExpect(), s.getCount());
-            failureMessages.add(failureMessage(s.getId(), test.getUnmatched().getExpect(), s.getCount()));
-        }
-    }
-
-    public static String failureMessage(String id, ExpectType expect, long count) {
-        if (passed(expect, count)) {
-            return null;
-        } else {
-            switch (expect) {
-                case ACCEPTABLE:
-                case ACCEPTABLE_INTERESTING:
-                case ACCEPTABLE_SPEC:
-                    return null;
-                case FORBIDDEN:
-                    return "Observed forbidden state: " + id;
-                case UNKNOWN:
-                    return "Missing description";
-                default:
-                    return "Missing grading";
-            }
-        }
-    }
-
-    public static boolean passed(ExpectType expect, long count) {
-        switch (expect) {
-            case ACCEPTABLE:
-            case ACCEPTABLE_INTERESTING:
-            case ACCEPTABLE_SPEC:
-                return true;
-            case FORBIDDEN:
-                return count == 0;
-            case UNKNOWN:
-                return false;
-            default:
-                throw new IllegalStateException("No grading for expect type = " + expect);
-        }
-    }
-
-    private static boolean hasInteresting(ExpectType expect, long count) {
-        switch (expect) {
-            case ACCEPTABLE:
-            case ACCEPTABLE_SPEC:
-            case FORBIDDEN:
-                return false;
-            case ACCEPTABLE_INTERESTING:
-                return count != 0;
-            case UNKNOWN:
-                return false;
-            default:
-                throw new IllegalStateException("No grading for expect type = " + expect);
-        }
-    }
-
-    private static boolean hasSpec(ExpectType expect, long count) {
-        switch (expect) {
-            case ACCEPTABLE:
-            case ACCEPTABLE_INTERESTING:
-            case FORBIDDEN:
-                return false;
-            case ACCEPTABLE_SPEC:
-                return count != 0;
-            case UNKNOWN:
-                return false;
-            default:
-                throw new IllegalStateException("No grading for expect type = " + expect);
-        }
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/BooleanResult1.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class BooleanResult1 implements Serializable, Result {
-
-    @Contended
-    public boolean r1;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        BooleanResult1 that = (BooleanResult1) o;
-
-        if (r1 != that.r1) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        return (r1 ? 1 : 0);
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = false;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/BooleanResult2.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class BooleanResult2 implements Serializable, Result {
-
-    @Contended
-    public boolean r1;
-
-    @Contended
-    public boolean r2;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        BooleanResult2 that = (BooleanResult2) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 ? 1 : 0);
-        result = 31 * result + (r2 ? 1 : 0);
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = false;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/BooleanResult4.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class BooleanResult4 implements Serializable, Result {
-
-    @Contended
-    public boolean r1;
-
-    @Contended
-    public boolean r2;
-
-    @Contended
-    public boolean r3;
-
-    @Contended
-    public boolean r4;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        BooleanResult4 that = (BooleanResult4) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-        if (r4 != that.r4) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 ? 1 : 0);
-        result = 31 * result + (r2 ? 1 : 0);
-        result = 31 * result + (r3 ? 1 : 0);
-        result = 31 * result + (r4 ? 1 : 0);
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ", " + r4 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = r4 = false;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/ByteResult1.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class ByteResult1 implements Serializable, Result {
-
-    @Contended
-    public byte r1;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ByteResult1 that = (ByteResult1) o;
-
-        if (r1 != that.r1) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        return (int) r1;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/ByteResult2.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class ByteResult2 implements Serializable, Result {
-
-    @Contended
-    public byte r1;
-
-    @Contended
-    public byte r2;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ByteResult2 that = (ByteResult2) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = r1;
-        result = 31 * result + r2;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/ByteResult3.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class ByteResult3 implements Serializable, Result {
-
-    @Contended
-    public byte r1;
-
-    @Contended
-    public byte r2;
-
-    @Contended
-    public byte r3;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ByteResult3 that = (ByteResult3) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (int) r1;
-        result = 31 * result + (int) r2;
-        result = 31 * result + (int) r3;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/ByteResult4.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class ByteResult4 implements Serializable, Result {
-
-    @Contended
-    public byte r1;
-
-    @Contended
-    public byte r2;
-
-    @Contended
-    public byte r3;
-
-    @Contended
-    public byte r4;
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ", " + r4 + ']';
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ByteResult4 that = (ByteResult4) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-        if (r4 != that.r4) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = r1;
-        result = 31 * result + r2;
-        result = 31 * result + r3;
-        result = 31 * result + r4;
-        return result;
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = r4 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/ByteResult8.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class ByteResult8 implements Serializable, Result {
-
-    @Contended
-    public byte r1;
-
-    @Contended
-    public byte r2;
-
-    @Contended
-    public byte r3;
-
-    @Contended
-    public byte r4;
-
-    @Contended
-    public byte r5;
-
-    @Contended
-    public byte r6;
-
-    @Contended
-    public byte r7;
-
-    @Contended
-    public byte r8;
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ", " + r4 + ", " + r5 + ", " + r6 + ", " + r7 + ", " + r8 + ']';
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ByteResult8 that = (ByteResult8) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-        if (r4 != that.r4) return false;
-        if (r5 != that.r5) return false;
-        if (r6 != that.r6) return false;
-        if (r7 != that.r7) return false;
-        if (r8 != that.r8) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (int) r1;
-        result = 31 * result + (int) r2;
-        result = 31 * result + (int) r3;
-        result = 31 * result + (int) r4;
-        result = 31 * result + (int) r5;
-        result = 31 * result + (int) r6;
-        result = 31 * result + (int) r7;
-        result = 31 * result + (int) r8;
-        return result;
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = r4 = r5 = r6 = r7 = r8 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/CharResult1.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class CharResult1 implements Serializable, Result {
-
-    @Contended
-    public char r1;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        CharResult1 that = (CharResult1) o;
-
-        if (r1 != that.r1) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        return (int) r1;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/CharResult2.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class CharResult2 implements Serializable, Result {
-
-    @Contended
-    public char r1;
-
-    @Contended
-    public char r2;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        CharResult2 that = (CharResult2) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (int) r1;
-        result = 31 * result + (int) r2;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/CharResult4.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class CharResult4 implements Serializable, Result {
-
-    @Contended
-    public char r1;
-
-    @Contended
-    public char r2;
-
-    @Contended
-    public char r3;
-
-    @Contended
-    public char r4;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        CharResult4 that = (CharResult4) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-        if (r4 != that.r4) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (int) r1;
-        result = 31 * result + (int) r2;
-        result = 31 * result + (int) r3;
-        result = 31 * result + (int) r4;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ", " + r4 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = r4 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/DoubleResult1.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class DoubleResult1 implements Serializable, Result {
-
-    @Contended
-    public double r1;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        DoubleResult1 that = (DoubleResult1) o;
-
-        if (Double.compare(that.r1, r1) != 0) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        long temp = r1 != +0.0d ? Double.doubleToLongBits(r1) : 0L;
-        return (int) (temp ^ (temp >>> 32));
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/DoubleResult2.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class DoubleResult2 implements Serializable, Result {
-
-    @Contended
-    public double r1;
-
-    @Contended
-    public double r2;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        DoubleResult2 that = (DoubleResult2) o;
-
-        if (Double.compare(that.r1, r1) != 0) return false;
-        if (Double.compare(that.r2, r2) != 0) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result;
-        long temp;
-        temp = r1 != +0.0d ? Double.doubleToLongBits(r1) : 0L;
-        result = (int) (temp ^ (temp >>> 32));
-        temp = r2 != +0.0d ? Double.doubleToLongBits(r2) : 0L;
-        result = 31 * result + (int) (temp ^ (temp >>> 32));
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/DoubleResult4.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class DoubleResult4 implements Serializable, Result {
-
-    @Contended
-    public double r1;
-
-    @Contended
-    public double r2;
-
-    @Contended
-    public double r3;
-
-    @Contended
-    public double r4;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        DoubleResult4 that = (DoubleResult4) o;
-
-        if (Double.compare(that.r1, r1) != 0) return false;
-        if (Double.compare(that.r2, r2) != 0) return false;
-        if (Double.compare(that.r3, r3) != 0) return false;
-        if (Double.compare(that.r4, r4) != 0) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result;
-        long temp;
-        temp = r1 != +0.0d ? Double.doubleToLongBits(r1) : 0L;
-        result = (int) (temp ^ (temp >>> 32));
-        temp = r2 != +0.0d ? Double.doubleToLongBits(r2) : 0L;
-        result = 31 * result + (int) (temp ^ (temp >>> 32));
-        temp = r3 != +0.0d ? Double.doubleToLongBits(r3) : 0L;
-        result = 31 * result + (int) (temp ^ (temp >>> 32));
-        temp = r4 != +0.0d ? Double.doubleToLongBits(r4) : 0L;
-        result = 31 * result + (int) (temp ^ (temp >>> 32));
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ", " + r4 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = r4 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/FloatResult1.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class FloatResult1 implements Serializable, Result {
-
-    @Contended
-    public float r1;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        FloatResult1 that = (FloatResult1) o;
-
-        if (Float.compare(that.r1, r1) != 0) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        return (r1 != +0.0f ? Float.floatToIntBits(r1) : 0);
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/FloatResult2.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class FloatResult2 implements Serializable, Result {
-
-    @Contended
-    public float r1;
-
-    @Contended
-    public float r2;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        FloatResult2 that = (FloatResult2) o;
-
-        if (Float.compare(that.r1, r1) != 0) return false;
-        if (Float.compare(that.r2, r2) != 0) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 != +0.0f ? Float.floatToIntBits(r1) : 0);
-        result = 31 * result + (r2 != +0.0f ? Float.floatToIntBits(r2) : 0);
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/FloatResult4.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class FloatResult4 implements Serializable, Result {
-
-    @Contended
-    public float r1;
-
-    @Contended
-    public float r2;
-
-    @Contended
-    public float r3;
-
-    @Contended
-    public float r4;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        FloatResult4 that = (FloatResult4) o;
-
-        if (Float.compare(that.r1, r1) != 0) return false;
-        if (Float.compare(that.r2, r2) != 0) return false;
-        if (Float.compare(that.r3, r3) != 0) return false;
-        if (Float.compare(that.r4, r4) != 0) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 != +0.0f ? Float.floatToIntBits(r1) : 0);
-        result = 31 * result + (r2 != +0.0f ? Float.floatToIntBits(r2) : 0);
-        result = 31 * result + (r3 != +0.0f ? Float.floatToIntBits(r3) : 0);
-        result = 31 * result + (r4 != +0.0f ? Float.floatToIntBits(r4) : 0);
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ", " + r4 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = r4 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/IntResult1.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class IntResult1 implements Serializable, Result {
-
-    @Contended
-    public int r1;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        IntResult1 that = (IntResult1) o;
-
-        if (r1 != that.r1) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        return r1;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/IntResult2.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class IntResult2 implements Serializable, Result {
-
-    @Contended
-    public int r1;
-
-    @Contended
-    public int r2;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        IntResult2 that = (IntResult2) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = r1;
-        result = 31 * result + r2;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/IntResult3.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class IntResult3 implements Serializable, Result {
-
-    @Contended
-    public int r1;
-
-    @Contended
-    public int r2;
-
-    @Contended
-    public int r3;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        IntResult3 that = (IntResult3) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = r1;
-        result = 31 * result + r2;
-        result = 31 * result + r3;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/IntResult4.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class IntResult4 implements Serializable, Result {
-
-    @Contended
-    public int r1;
-
-    @Contended
-    public int r2;
-
-    @Contended
-    public int r3;
-
-    @Contended
-    public int r4;
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ", " + r4 + ']';
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        IntResult4 that = (IntResult4) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-        if (r4 != that.r4) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = r1;
-        result = 31 * result + r2;
-        result = 31 * result + r3;
-        result = 31 * result + r4;
-        return result;
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = r4 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/IntResult8.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class IntResult8 implements Serializable, Result {
-
-    @Contended
-    public int r1;
-
-    @Contended
-    public int r2;
-
-    @Contended
-    public int r3;
-
-    @Contended
-    public int r4;
-
-    @Contended
-    public int r5;
-
-    @Contended
-    public int r6;
-
-    @Contended
-    public int r7;
-
-    @Contended
-    public int r8;
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ", " + r4 + ", " + r5 + ", " + r6 + ", " + r7 + ", " + r8 + ']';
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        IntResult8 that = (IntResult8) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-        if (r4 != that.r4) return false;
-        if (r5 != that.r5) return false;
-        if (r6 != that.r6) return false;
-        if (r7 != that.r7) return false;
-        if (r8 != that.r8) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = r1;
-        result = 31 * result + r2;
-        result = 31 * result + r3;
-        result = 31 * result + r4;
-        result = 31 * result + r5;
-        result = 31 * result + r6;
-        result = 31 * result + r7;
-        result = 31 * result + r8;
-        return result;
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = r4 = r5 = r6 = r7 = r8 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/LongResult1.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class LongResult1 implements Serializable, Result {
-
-    @Contended
-    public long r1;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        LongResult1 that = (LongResult1) o;
-
-        if (r1 != that.r1) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        return (int) (r1 ^ (r1 >>> 32));
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/LongResult2.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class LongResult2 implements Serializable, Result {
-
-    @Contended
-    public long r1;
-
-    @Contended
-    public long r2;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        LongResult2 that = (LongResult2) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (int) (r1 ^ (r1 >>> 32));
-        result = 31 * result + (int) (r2 ^ (r2 >>> 32));
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/LongResult3.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class LongResult3 implements Serializable, Result {
-
-    @Contended
-    public long r1;
-
-    @Contended
-    public long r2;
-
-    @Contended
-    public long r3;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        LongResult3 that = (LongResult3) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (int) (r1 ^ (r1 >>> 32));
-        result = 31 * result + (int) (r2 ^ (r2 >>> 32));
-        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/LongResult4.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class LongResult4 implements Serializable, Result {
-
-    @Contended
-    public long r1;
-
-    @Contended
-    public long r2;
-
-    @Contended
-    public long r3;
-
-    @Contended
-    public long r4;
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ", " + r4 + ']';
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        LongResult4 that = (LongResult4) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-        if (r4 != that.r4) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (int) (r1 ^ (r1 >>> 32));
-        result = 31 * result + (int) (r2 ^ (r2 >>> 32));
-        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
-        result = 31 * result + (int) (r4 ^ (r4 >>> 32));
-        return result;
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = r4 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/ShortResult1.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class ShortResult1 implements Serializable, Result {
-
-    @Contended
-    public short r1;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ShortResult1 that = (ShortResult1) o;
-
-        if (r1 != that.r1) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        return (int) r1;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/ShortResult2.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class ShortResult2 implements Serializable, Result {
-
-    @Contended
-    public short r1;
-
-    @Contended
-    public short r2;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ShortResult2 that = (ShortResult2) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (int) r1;
-        result = 31 * result + (int) r2;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2  + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/results/ShortResult4.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +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.
- */
-package org.openjdk.jcstress.infra.results;
-
-import org.openjdk.jcstress.infra.Result;
-import sun.misc.Contended;
-
-import java.io.Serializable;
-
-public class ShortResult4 implements Serializable, Result {
-
-    @Contended
-    public short r1;
-
-    @Contended
-    public short r2;
-
-    @Contended
-    public short r3;
-
-    @Contended
-    public short r4;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ShortResult4 that = (ShortResult4) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-        if (r4 != that.r4) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (int) r1;
-        result = 31 * result + (int) r2;
-        result = 31 * result + (int) r3;
-        result = 31 * result + (int) r4;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return "[" + r1 + ", " + r2 + ", " + r3 + ", " + r4 + ']';
-    }
-
-    @Override
-    public void reset() {
-        r1 = r2 = r3 = r4 = 0;
-    }
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/runners/Actor1_Runner.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +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.
- */
-package org.openjdk.jcstress.infra.runners;
-
-import org.openjdk.jcstress.Options;
-import org.openjdk.jcstress.infra.Result;
-import org.openjdk.jcstress.infra.Status;
-import org.openjdk.jcstress.infra.collectors.TestResultCollector;
-import org.openjdk.jcstress.tests.Actor1_Test;
-import org.openjdk.jcstress.util.Counter;
-import org.openjdk.jcstress.util.Counters;
-import org.openjdk.jcstress.util.VMSupport;
-
-import javax.xml.bind.JAXBException;
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-
-/**
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class Actor1_Runner<S, R extends Result> extends Runner {
-    private final Actor1_Test<S, R> test;
-
-    public Actor1_Runner(Options opts, Actor1_Test<S, R> test, TestResultCollector collector, ExecutorService pool) throws FileNotFoundException, JAXBException {
-        super(opts, collector, pool);
-        this.test = test;
-    }
-
-    /**
-     * Run the test.
-     * This method blocks until test is complete
-     */
-    public void run() {
-        testLog.println("Running " + test.getClass().getName());
-
-        try {
-            R res1 = test.newResult();
-            S state = test.newState();
-            test.actor1(state, res1);
-        } catch (NoClassDefFoundError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH, e);
-            return;
-        } catch (NoSuchFieldError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH, e);
-            return;
-        } catch (NoSuchMethodError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH, e);
-            return;
-        } catch (Throwable e) {
-            testLog.println("Check test failed");
-            testLog.println();
-            dumpFailure(test, Status.CHECK_TEST_ERROR, e);
-            return;
-        }
-
-        testLog.print("Iterations ");
-        for (int c = 0; c < iters; c++) {
-            try {
-                VMSupport.tryDeoptimizeAllInfra(deoptRatio);
-            } catch (NoClassDefFoundError err) {
-                // gracefully "handle"
-            }
-
-            testLog.print(".");
-            testLog.flush();
-            Counter<R> runResult = run(time);
-
-            dump(test, runResult);
-        }
-        testLog.println();
-    }
-
-    @Override
-    public int requiredThreads() {
-        return 1;
-    }
-
-
-    private Counter<R> run(int time) {
-
-        @SuppressWarnings("unchecked")
-        final S[] poison = (S[]) new Object[0];
-
-        ControlHolder controlHolder = new ControlHolder(minStride, maxStride, shouldYield);
-
-        Collection<Future<?>> tasks = new ArrayList<Future<?>>();
-
-        final AtomicReference<StateHolder<S, R>> version = new AtomicReference<StateHolder<S, R>>();
-
-        @SuppressWarnings("unchecked")
-        final Counter<R> counter = Counters.newCounter((Class<R>) test.newResult().getClass());
-
-        @SuppressWarnings("unchecked")
-        S[] newStride = (S[]) new Object[minStride];
-        for (int c = 0; c < minStride; c++) {
-            newStride[c] = test.newState();
-        }
-
-        @SuppressWarnings("unchecked")
-        R[] newResult = (R[]) new Result[minStride];
-        for (int c = 0; c < minStride; c++) {
-            newResult[c] = test.newResult();
-        }
-
-        StateHolder<S, R> holder = new StateHolder<S, R>(newStride, newResult, 1);
-        version.set(holder);
-
-        AtomicInteger epoch = new AtomicInteger();
-
-        tasks.add(pool.submit(
-                new ActorBase<Actor1_Test<S, R>, S, R>(1, test, version, epoch, counter, controlHolder, poison) {
-                    @Override
-                    protected void work1(Actor1_Test<S, R> test, S state, R result) {
-                        test.actor1(state, result);
-                    }
-                }
-        ));
-
-        try {
-            TimeUnit.MILLISECONDS.sleep(time);
-        } catch (InterruptedException e) {
-            // do nothing
-        }
-
-        controlHolder.isStopped = true;
-
-        waitFor(test, tasks);
-
-        return counter;
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/runners/Actor2_Arbiter1_Runner.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,184 +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.
- */
-package org.openjdk.jcstress.infra.runners;
-
-import org.openjdk.jcstress.Options;
-import org.openjdk.jcstress.infra.Result;
-import org.openjdk.jcstress.infra.Status;
-import org.openjdk.jcstress.infra.collectors.TestResultCollector;
-import org.openjdk.jcstress.tests.Actor2_Arbiter1_Test;
-import org.openjdk.jcstress.util.Counter;
-import org.openjdk.jcstress.util.Counters;
-import org.openjdk.jcstress.util.VMSupport;
-
-import javax.xml.bind.JAXBException;
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-
-/**
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class Actor2_Arbiter1_Runner<S, R extends Result> extends Runner {
-    private Actor2_Arbiter1_Test<S, R> test;
-
-    public Actor2_Arbiter1_Runner(Options opts, Actor2_Arbiter1_Test<S, R> test, TestResultCollector collector, ExecutorService pool) throws FileNotFoundException, JAXBException {
-        super(opts, collector, pool);
-        this.test = test;
-    }
-
-    public void run() {
-        testLog.println("Running " + test.getClass().getName());
-
-        try {
-            R res = test.newResult();
-            S state = test.newState();
-            test.actor1(state, res);
-            test.actor2(state, res);
-            test.arbiter1(state, res);
-        } catch (NoClassDefFoundError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH);
-            return;
-        } catch (NoSuchFieldError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH);
-            return;
-        } catch (NoSuchMethodError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH);
-            return;
-        } catch (Throwable e) {
-            testLog.println("Check test failed");
-            testLog.println();
-            dumpFailure(test, Status.CHECK_TEST_ERROR);
-            return;
-        }
-
-        testLog.print("Iterations ");
-        for (int c = 0; c < iters; c++) {
-            try {
-                VMSupport.tryDeoptimizeAllInfra(deoptRatio);
-            } catch (NoClassDefFoundError err) {
-                // gracefully "handle"
-            }
-
-            testLog.print(".");
-            testLog.flush();
-            Counter<R> runResult = run(time);
-
-            dump(test, runResult);
-        }
-
-        testLog.println();
-    }
-
-    @Override
-    public int requiredThreads() {
-        return 3;
-    }
-
-    public Counter<R> run(int time) {
-        @SuppressWarnings("unchecked")
-        final S[] poison = (S[]) new Object[0];
-
-        ControlHolder controlHolder = new ControlHolder(minStride, maxStride, shouldYield);
-
-        Collection<Future<?>> tasks = new ArrayList<Future<?>>();
-
-        final AtomicReference<StateHolder<S, R>> version = new AtomicReference<StateHolder<S, R>>();
-
-        @SuppressWarnings("unchecked")
-        final Counter<R> counter = Counters.newCounter((Class<R>) test.newResult().getClass());
-
-        @SuppressWarnings("unchecked")
-        S[] newStride = (S[]) new Object[minStride];
-        for (int c = 0; c < minStride; c++) {
-            newStride[c] = test.newState();
-        }
-
-        @SuppressWarnings("unchecked")
-        R[] newResult = (R[]) new Result[minStride];
-        for (int c = 0; c < minStride; c++) {
-            newResult[c] = test.newResult();
-        }
-
-        StateHolder<S, R> holder = new StateHolder<S, R>(newStride, newResult, 2);
-        version.set(holder);
-
-        AtomicInteger epoch = new AtomicInteger();
-
-        Future<?> a1 = pool.submit(
-                new ActorBase<Actor2_Arbiter1_Test<S, R>, S, R>(1, test, version, epoch, counter, controlHolder, poison) {
-                    @Override
-                    protected void work1(Actor2_Arbiter1_Test<S, R> test, S state, R result) {
-                        test.actor1(state, result);
-                    }
-
-                    @Override
-                    protected void arbitrate(Actor2_Arbiter1_Test<S, R> test, S state, R result) {
-                        test.arbiter1(state, result);
-                    }
-                }
-        );
-        tasks.add(a1);
-
-        Future<?> a2 = pool.submit(
-                new ActorBase<Actor2_Arbiter1_Test<S, R>, S, R>(2, test, version, epoch, counter, controlHolder, poison) {
-                    @Override
-                    protected void work2(Actor2_Arbiter1_Test<S, R> test, S state, R result) {
-                        test.actor2(state, result);
-                    }
-
-                    @Override
-                    protected void arbitrate(Actor2_Arbiter1_Test<S, R> test, S state, R result) {
-                        test.arbiter1(state, result);
-                    }
-                }
-        );
-        tasks.add(a2);
-
-        try {
-            TimeUnit.MILLISECONDS.sleep(time);
-        } catch (InterruptedException e) {
-            // do nothing
-        }
-
-        controlHolder.isStopped = true;
-
-        waitFor(test, tasks);
-
-        return counter;
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/runners/Actor2_Runner.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +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.
- */
-package org.openjdk.jcstress.infra.runners;
-
-import org.openjdk.jcstress.Options;
-import org.openjdk.jcstress.infra.Result;
-import org.openjdk.jcstress.infra.Status;
-import org.openjdk.jcstress.infra.collectors.TestResultCollector;
-import org.openjdk.jcstress.tests.Actor2_Test;
-import org.openjdk.jcstress.util.Counter;
-import org.openjdk.jcstress.util.Counters;
-import org.openjdk.jcstress.util.VMSupport;
-
-import javax.xml.bind.JAXBException;
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-
-/**
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class Actor2_Runner<S, R extends Result> extends Runner {
-    final Actor2_Test<S, R> test;
-
-    public Actor2_Runner(Options opts, Actor2_Test<S, R> test, TestResultCollector collector, ExecutorService pool) throws FileNotFoundException, JAXBException {
-        super(opts, collector, pool);
-        this.test = test;
-    }
-
-    /**
-     * Run the test.
-     * This method blocks until test is complete
-     *
-     */
-    public void run() {
-        testLog.println("Running " + test.getClass().getName());
-
-        try {
-            R res1 = test.newResult();
-            R res2 = test.newResult();
-            S state = test.newState();
-            test.actor1(state, res1);
-            test.actor2(state, res2);
-        } catch (NoClassDefFoundError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH);
-            return;
-        } catch (NoSuchFieldError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH);
-            return;
-        } catch (NoSuchMethodError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH);
-            return;
-        } catch (Throwable e) {
-            testLog.println("Check test failed");
-            testLog.println();
-            dumpFailure(test, Status.CHECK_TEST_ERROR);
-            return;
-        }
-
-        testLog.print("Iterations ");
-        for (int c = 0; c < iters; c++) {
-            try {
-                VMSupport.tryDeoptimizeAllInfra(deoptRatio);
-            } catch (NoClassDefFoundError err) {
-                // gracefully "handle"
-            }
-
-            testLog.print(".");
-            testLog.flush();
-            Counter<R> runResult = run(time);
-
-            dump(test, runResult);
-        }
-        testLog.println();
-    }
-
-    @Override
-    public int requiredThreads() {
-        return 2;
-    }
-
-    private Counter<R> run(int time) {
-
-        @SuppressWarnings("unchecked")
-        final S[] poison = (S[]) new Object[0];
-
-        ControlHolder controlHolder = new ControlHolder(minStride, maxStride, shouldYield);
-
-        Collection<Future<?>> tasks = new ArrayList<Future<?>>();
-
-        final AtomicReference<StateHolder<S, R>> version = new AtomicReference<StateHolder<S, R>>();
-
-        @SuppressWarnings("unchecked")
-        final Counter<R> counter = Counters.newCounter((Class<R>) test.newResult().getClass());
-
-        @SuppressWarnings("unchecked")
-        S[] newStride = (S[]) new Object[minStride];
-        for (int c = 0; c < minStride; c++) {
-            newStride[c] = test.newState();
-        }
-
-        @SuppressWarnings("unchecked")
-        R[] newResult = (R[]) new Result[minStride];
-        for (int c = 0; c < minStride; c++) {
-            newResult[c] = test.newResult();
-        }
-
-        StateHolder<S, R> holder = new StateHolder<S, R>(newStride, newResult, 2);
-        version.set(holder);
-
-        AtomicInteger epoch = new AtomicInteger();
-
-        tasks.add(pool.submit(
-                new ActorBase<Actor2_Test<S, R>, S, R>(1, test, version, epoch, counter, controlHolder, poison) {
-                    @Override
-                    protected void work1(Actor2_Test<S, R> test, S state, R result) {
-                        test.actor1(state, result);
-                    }
-                }
-        ));
-
-        tasks.add(pool.submit(
-                new ActorBase<Actor2_Test<S, R>, S, R>(2, test, version, epoch, counter, controlHolder, poison) {
-                    @Override
-                    protected void work2(Actor2_Test<S, R> test, S state, R result) {
-                        test.actor2(state, result);
-                    }
-                }
-        ));
-
-        try {
-            TimeUnit.MILLISECONDS.sleep(time);
-        } catch (InterruptedException e) {
-            // do nothing
-        }
-
-        controlHolder.isStopped = true;
-
-        waitFor(test, tasks);
-
-        return counter;
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/runners/Actor3_Runner.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,187 +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.
- */
-package org.openjdk.jcstress.infra.runners;
-
-import org.openjdk.jcstress.Options;
-import org.openjdk.jcstress.infra.Result;
-import org.openjdk.jcstress.infra.Status;
-import org.openjdk.jcstress.infra.collectors.TestResultCollector;
-import org.openjdk.jcstress.tests.Actor3_Test;
-import org.openjdk.jcstress.util.Counter;
-import org.openjdk.jcstress.util.Counters;
-import org.openjdk.jcstress.util.VMSupport;
-
-import javax.xml.bind.JAXBException;
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-
-/**
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class Actor3_Runner<S, R extends Result> extends Runner {
-    final Actor3_Test<S, R> test;
-
-    public Actor3_Runner(Options opts, Actor3_Test<S, R> test, TestResultCollector collector, ExecutorService pool) throws FileNotFoundException, JAXBException {
-        super(opts, collector, pool);
-        this.test = test;
-    }
-
-    /**
-     * Run the test.
-     * This method blocks until test is complete
-     */
-    public void run() {
-        testLog.println("Running " + test.getClass().getName());
-
-        try {
-            R res1 = test.newResult();
-            R res2 = test.newResult();
-            R res3 = test.newResult();
-            S state = test.newState();
-            test.actor1(state, res1);
-            test.actor2(state, res2);
-            test.actor3(state, res3);
-        } catch (NoClassDefFoundError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH);
-            return;
-        } catch (NoSuchFieldError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH);
-            return;
-        } catch (NoSuchMethodError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH);
-            return;
-        } catch (Throwable e) {
-            testLog.println("Check test failed");
-            testLog.println();
-            dumpFailure(test, Status.CHECK_TEST_ERROR);
-            return;
-        }
-
-        testLog.print("Iterations ");
-        for (int c = 0; c < iters; c++) {
-            try {
-                VMSupport.tryDeoptimizeAllInfra(deoptRatio);
-            } catch (NoClassDefFoundError err) {
-                // gracefully "handle"
-            }
-
-            testLog.print(".");
-            testLog.flush();
-            Counter<R> runResult = run(time);
-
-            dump(test, runResult);
-        }
-        testLog.println();
-    }
-
-    @Override
-    public int requiredThreads() {
-        return 3;
-    }
-
-    private Counter<R> run(int time) {
-
-        @SuppressWarnings("unchecked")
-        final S[] poison = (S[]) new Object[0];
-
-        ControlHolder controlHolder = new ControlHolder(minStride, maxStride, shouldYield);
-
-        Collection<Future<?>> tasks = new ArrayList<Future<?>>();
-
-        final AtomicReference<StateHolder<S, R>> version = new AtomicReference<StateHolder<S, R>>();
-
-        @SuppressWarnings("unchecked")
-        final Counter<R> counter = Counters.newCounter((Class<R>) test.newResult().getClass());
-
-        @SuppressWarnings("unchecked")
-        S[] newStride = (S[]) new Object[minStride];
-        for (int c = 0; c < minStride; c++) {
-            newStride[c] = test.newState();
-        }
-
-        @SuppressWarnings("unchecked")
-        R[] newResult = (R[]) new Result[minStride];
-        for (int c = 0; c < minStride; c++) {
-            newResult[c] = test.newResult();
-        }
-
-        StateHolder<S, R> holder = new StateHolder<S, R>(newStride, newResult, 3);
-        version.set(holder);
-
-        AtomicInteger epoch = new AtomicInteger();
-
-        tasks.add(pool.submit(
-                new ActorBase<Actor3_Test<S, R>, S, R>(1, test, version, epoch, counter, controlHolder, poison) {
-                    @Override
-                    protected void work1(Actor3_Test<S, R> test, S state, R result) {
-                        test.actor1(state, result);
-                    }
-                }
-        ));
-
-        tasks.add(pool.submit(
-                new ActorBase<Actor3_Test<S, R>, S, R>(2, test, version, epoch, counter, controlHolder, poison) {
-                    @Override
-                    protected void work2(Actor3_Test<S, R> test, S state, R result) {
-                        test.actor2(state, result);
-                    }
-                }
-        ));
-
-        tasks.add(pool.submit(
-                new ActorBase<Actor3_Test<S, R>, S, R>(3, test, version, epoch, counter, controlHolder, poison) {
-                    @Override
-                    protected void work3(Actor3_Test<S, R> test, S state, R result) {
-                        test.actor3(state, result);
-                    }
-                }
-        ));
-
-        try {
-            TimeUnit.MILLISECONDS.sleep(time);
-        } catch (InterruptedException e) {
-            // do nothing
-        }
-
-        controlHolder.isStopped = true;
-
-        waitFor(test, tasks);
-
-        return counter;
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/runners/Actor4_Runner.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,198 +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.
- */
-package org.openjdk.jcstress.infra.runners;
-
-import org.openjdk.jcstress.Options;
-import org.openjdk.jcstress.infra.Result;
-import org.openjdk.jcstress.infra.Status;
-import org.openjdk.jcstress.infra.collectors.TestResultCollector;
-import org.openjdk.jcstress.tests.Actor4_Test;
-import org.openjdk.jcstress.util.Counter;
-import org.openjdk.jcstress.util.Counters;
-import org.openjdk.jcstress.util.VMSupport;
-
-import javax.xml.bind.JAXBException;
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-
-/**
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public class Actor4_Runner<S, R extends Result> extends Runner {
-    final Actor4_Test<S, R> test;
-
-    public Actor4_Runner(Options opts, Actor4_Test<S, R> test, TestResultCollector collector, ExecutorService pool) throws FileNotFoundException, JAXBException {
-        super(opts, collector, pool);
-        this.test = test;
-    }
-
-    /**
-     * Run the test.
-     * This method blocks until test is complete
-     */
-    public void run() {
-        testLog.println("Running " + test.getClass().getName());
-
-        try {
-            R res1 = test.newResult();
-            R res2 = test.newResult();
-            R res3 = test.newResult();
-            R res4 = test.newResult();
-            S state = test.newState();
-            test.actor1(state, res1);
-            test.actor2(state, res2);
-            test.actor3(state, res3);
-            test.actor4(state, res4);
-        } catch (NoClassDefFoundError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH);
-            return;
-        } catch (NoSuchFieldError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH);
-            return;
-        } catch (NoSuchMethodError e) {
-            testLog.println("Test sanity check failed, skipping");
-            testLog.println();
-            dumpFailure(test, Status.API_MISMATCH);
-            return;
-        } catch (Throwable e) {
-            testLog.println("Check test failed");
-            testLog.println();
-            dumpFailure(test, Status.CHECK_TEST_ERROR);
-            return;
-        }
-
-        testLog.print("Iterations ");
-        for (int c = 0; c < iters; c++) {
-            try {
-                VMSupport.tryDeoptimizeAllInfra(deoptRatio);
-            } catch (NoClassDefFoundError err) {
-                // gracefully "handle"
-            }
-
-            testLog.print(".");
-            testLog.flush();
-            Counter<R> runResult = run(time);
-
-            dump(test, runResult);
-        }
-        testLog.println();
-    }
-
-    @Override
-    public int requiredThreads() {
-        return 4;
-    }
-
-    private Counter<R> run(int time) {
-
-        @SuppressWarnings("unchecked")
-        final S[] poison = (S[]) new Object[0];
-
-        ControlHolder controlHolder = new ControlHolder(minStride, maxStride, shouldYield);
-
-        Collection<Future<?>> tasks = new ArrayList<Future<?>>();
-
-        final AtomicReference<StateHolder<S, R>> version = new AtomicReference<StateHolder<S, R>>();
-
-        @SuppressWarnings("unchecked")
-        final Counter<R> counter = Counters.newCounter((Class<R>) test.newResult().getClass());
-
-        @SuppressWarnings("unchecked")
-        S[] newStride = (S[]) new Object[minStride];
-        for (int c = 0; c < minStride; c++) {
-            newStride[c] = test.newState();
-        }
-
-        @SuppressWarnings("unchecked")
-        R[] newResult = (R[]) new Result[minStride];
-        for (int c = 0; c < minStride; c++) {
-            newResult[c] = test.newResult();
-        }
-
-        StateHolder<S, R> holder = new StateHolder<S, R>(newStride, newResult, 4);
-        version.set(holder);
-
-        AtomicInteger epoch = new AtomicInteger();
-
-        tasks.add(pool.submit(
-                new ActorBase<Actor4_Test<S, R>, S, R>(1, test, version, epoch, counter, controlHolder, poison) {
-                    @Override
-                    protected void work1(Actor4_Test<S, R> test, S state, R result) {
-                        test.actor1(state, result);
-                    }
-                }
-        ));
-
-        tasks.add(pool.submit(
-                new ActorBase<Actor4_Test<S, R>, S, R>(2, test, version, epoch, counter, controlHolder, poison) {
-                    @Override
-                    protected void work2(Actor4_Test<S, R> test, S state, R result) {
-                        test.actor2(state, result);
-                    }
-                }
-        ));
-
-        tasks.add(pool.submit(
-                new ActorBase<Actor4_Test<S, R>, S, R>(3, test, version, epoch, counter, controlHolder, poison) {
-                    @Override
-                    protected void work3(Actor4_Test<S, R> test, S state, R result) {
-                        test.actor3(state, result);
-                    }
-                }
-        ));
-
-        tasks.add(pool.submit(
-                new ActorBase<Actor4_Test<S, R>, S, R>(4, test, version, epoch, counter, controlHolder, poison) {
-                    @Override
-                    protected void work4(Actor4_Test<S, R> test, S state, R result) {
-                        test.actor4(state, result);
-                    }
-                }
-        ));
-
-        try {
-            TimeUnit.MILLISECONDS.sleep(time);
-        } catch (InterruptedException e) {
-            // do nothing
-        }
-
-        controlHolder.isStopped = true;
-
-        waitFor(test, tasks);
-
-        return counter;
-    }
-
-}
--- a/harness/src/main/java/org/openjdk/jcstress/infra/runners/ActorBase.java	Tue Jan 14 14:16:05 2014 +0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,244 +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.
- */
-package org.openjdk.jcstress.infra.runners;
-
-import org.openjdk.jcstress.infra.Result;
-import org.openjdk.jcstress.tests.ActorConcurrencyTest;
-import org.openjdk.jcstress.util.Counter;
-import org.openjdk.jcstress.util.UnsafeHolder;
-
-import java.util.Arrays;
-import java.util.concurrent.Callable;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-
-/**
- * Actor base.
- *
- * This serves as the base for the worker threads. This class is optimized to extreme,
- * because the speed of the infrastructure is essential to get enough samples for the tests,
- * effectively meaning "faster infra => more reliability for probabilistic tests".
- *
- * @author Aleksey Shipilev (aleksey.shipilev@oracle.com)
- */
-public abstract class ActorBase<T extends ActorConcurrencyTest<S, R>, S, R extends Result> implements Callable<Void> {
-    private final int index;
-    private final T test;
-    private final AtomicReference<StateHolder<S, R>> version;
-    private final AtomicInteger epoch;
-    private final Counter<R> counter;
-    private final ControlHolder control;
-    private final S[] poison;
-
-    public ActorBase(int index, T test, AtomicReference<StateHolder<S,R>> version, AtomicInteger epoch, Counter<R> counter, ControlHolder control, S[] poison) {
-        this.index = index;
-        this.test = test;
-        this.version = version;
-        this.epoch = epoch;
-        this.counter = counter;
-        this.control = control;
-        this.poison = poison;
-    }
-
-    // fired concurrently for each worker
-    protected void work1(T test, S state, R result) {
-        // no default implementation
-    }
-
-    // fired concurrently for each worker
-    protected void work2(T test, S state, R result) {
-        // no default implementation
-    }
-
-    // fired concurrently for each worker
-    protected void work3(T test, S state, R result) {
-        // no default implementation
-    }
-
-    // fired concurrently for each worker
-    protected void work4(T test, S state, R result) {
-        // no default implementation
-    }
-
-    // fired by one of the workers before consuming the results
-    protected void arbitrate(T test, S state, R result) {
-        // no default implementation
-    }
-
-    public Void call() {
-        int lastLoops = 0;
-
-        int[] indices = null;
-        int curEpoch = 0;
-
-        boolean shouldYield = control.shouldYield;
-        int maxStride = control.maxStride;
-
-        Counter<R> lCounter = counter;
-        T lt = test;
-        int lIndex = index;
-        S[] lPoison = poison;
-
-        while (true) {
-            // poll the holder and my relevant state
-            StateHolder<S, R> holder = version.get();
-            S[] cur = holder.s;
-            R[] res = holder.r;
-
-            // got the poison pill, break out
-            if (cur == lPoison) {
-                return null;
-            }
-
-            int loops = holder.loops;
-
-            // check if we need to refit our collections
-            if (loops != lastLoops) {
-                lastLoops = loops;
-                indices = Runner.generatePermutation(loops);