Copyright (c) 2008, 2018, 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.

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.

* common/ArrayBounds

Checks whether the compiler makes incorrect array bounds removal optimizations.

* common/ArrayTests

Checks whether array stores and reads are correct for integral types and floating points.

* common/bounds

Makes sure that array bounds checking is enabled with the JIT on

* common/CEETest

Checks whether comparision operations work properly.

* common/collapse

Checks constatnt propagation facilities of the JIT compiler.

* common/CondExpr

Checks that code for conditional expressions is generated properly.

* common/deoptimization/test01
* common/deoptimization/test02
* common/deoptimization/test03
* common/deoptimization/test04
* common/deoptimization/test05
* common/deoptimization/test06
* common/deoptimization/test07
* common/deoptimization/test08

Check compiler deoptimization facilities.

* common/DivTest

Checks some special cases of divide operation.

* common/exception

This JIT buster test checks to see if a JIT doing register allocation
on a machine with a callees saves ABI for non-volatile registers can
get the exception handling correct. Intel and PowerPC are both such
machines.

* common/exceptiontest

Does exactly the same as common/exception

* common/ExcOpt

Tests exception handler inside optimizable loop and around it.

* common/FPCompare/TestFPBinop

Tests floating point binary operations.

* common/FPCompare/TestFPCompare

Test of floating point comparison.

* common/gen_math/Filtering
* common/gen_math/Loops_1
* common/gen_math/Loops_2
* common/gen_math/Loops_3
* common/gen_math/Loops_4
* common/gen_math/Loops_5
* common/gen_math/Loops_6
* common/gen_math/Loops_7
* common/gen_math/Matrix_3d
* common/gen_math/Summ

These tests check math preciction stuff.

* common/gen_math/ShortCircuitTest

A complete set of tests for the binary Java operators {&&, ||, &, |} to
ensure that (C-style) short circuit evaluation is used where required, and
also is not used where prohibited.  Checks has been constructed carefully to
be independent of the operators under scrutiny, so that passing these tests
constitutes validation of those operators.

* common/graph

The test checks the dynamic class creation and method invokation reflection features. A number of threads is created. They call
methods dynamically and recursively. Also, exceptions, thrown from the dynamically called methods are checked.

* common/inittest

Checks correctness of class initialization order.

* common/inittest2

Checks that JIT doesn't perform an initialization of class which is never used.

* common/inline001

This test is valid in JDK 1.1.4 and in prior JDKs.  It
ceased to work in JDK 1.2e.  The test relied on the JIT
to inline some final methods and to never inline non-final
methods.

* common/inline002

Look for inlined final methods in java.Math.  Do this by comparing
execution times against estimates of call overheads for various
method signatures.

The current (08/04/97) list of inlined methods is short:
    abs(float)
    abs(double)
    sqrt(double)  [i386 only]
If new methods are inlined or dropped from the list of inlined
codes, record this fact by changing the value of an element of the
array expectInline.  This is done in the method result().

This test will fail if the JIT is disabled.  There are two modes
of operation.  The first is to merely record a pass/fail for each
method tested.  This output should be machine independent and
suitable for a golden file.
  java -Djava.compiler=sunwjit inline002
The other mode is a report generation mode.  It reports the
number of iterations, call overhead in nanoseconds, and a judgement
as to whether a method was inlined or not.
  java -Djava.compiler=sunwjit inline002 -report

* common/inline003
* common/inline004

Check inlining of final methods.

* common/inline005

Checks correctness of evaluation order in inlined math functions (?).

* common/inline006
* common/inline007

Checks access to final class fields.

* common/JITSuite

Does exactly the same as common/inittest2

* common/jtest

Does some client-server communications via sockets. Not actually a JIT test!

* common/Linpack

Math presiction test.

* common/loops/arg01
* common/loops/arg03

Fill arrays in a loops and then makes a number of checks (?)

* common/loops/arg04

Checks correctness of interprocedural data flow analysis, tests for recognition of
loop independent dependences between statements in mutually exclusive regions, checks
global data flow analysis.

* common/loops/arg05

Checks loop vectorization stuff.

* common/loops/arg06

Checks statement reordering, loop distribution, partial loop vectorization, recurrence
in the middle of the loop.

* common/loops/arg07

Checks loop interchange, node splitting.

* common/loops/arg08

Checks scalar and array expansion.

* common/loops/arg09

Checks scalar and array expansion, control flow (loop with independent conditional).

* common/loops/arg10

Some control flow-related checks.

* common/loops/dec01
* common/loops/dec02
* common/loops/dec03
* common/loops/dec04
* common/loops/dec05
* common/loops/dec06
* common/loops/dec07
* common/loops/dec08
* common/loops/dec09
* common/loops/dec10
* common/loops/dec11

Some aritmetic operations within loops and a number of comparisions (?).

* common/loops/fuse1
* common/loops/fuse10
* common/loops/fuse101
* common/loops/fuse102
* common/loops/fuse103
* common/loops/fuse105
* common/loops/fuse106
* common/loops/fuse108
* common/loops/fuse11
* common/loops/fuse111
* common/loops/fuse113
* common/loops/fuse116
* common/loops/fuse117
* common/loops/fuse12
* common/loops/fuse13
* common/loops/fuse14
* common/loops/fuse16
* common/loops/fuse17
* common/loops/fuse18
* common/loops/fuse2
* common/loops/fuse3
* common/loops/fuse4
* common/loops/fuse5
* common/loops/fuse6
* common/loops/fuse8

Check correctness of loop fusion.

* common/loops/fuse107
* common/loops/fuse109
* common/loops/fuse15
* common/loops/fuse19
* common/loops/fuse7
* common/loops/fuse9

Construct a number of loops and make some calculations. These tests seems to be
incomplete (incorrectly translated from Fortran).

* common/loops/private1

Single dimensional private array, with no carried dependence in the inner
loop - simple subscripts.

* common/loops/private2

Single dimensional private array, with no carried dependence in the inner
loop - non-simple subscripts (test incomplete).

* common/loops/private3

Single dimensional private array, with no carried dependence
in the inner loop  (test incomplete).

* common/loops/private4

Loop with condionals, both arms of the conditional cover the entire array
which is private.

* common/loops/private5

Single dimensional private array, 2 inner loops; all uses of array in the 2nd loop are
covered by defs in the 1st one.

* common/loops/private6

Single dimensional private array; all uses of array in the inner loop are
covered by defs in the outer one.

* common/loops/private7

Single dimensional private array, 3 inner loops; all uses of array in the 3rd loop are
covered by defs in the 1st and 2nd one.

* common/loops/private8

Single dimensional private array, 3 inner loops; the defs of array in the 2nd loop cover
all the defs and uses within loops 2 and 3.

* common/loops/private9

Single dimensional private array, the two loops effectively cover the array.

* common/loops/private10

Single dimensional private array, the two asignments to the array in the inner loop
effectively cover the entire array.

* common/loops/private104

Loop with condionals. Both arms of the conditional cover the entire array.

* common/loops/private105

Single dimensional private array, 2 inner loops; all uses of array in the 2nd loop are
covered by defs in the 1st one.

* common/loops/private107

Single dimensional private array, 3 inner loops; all uses of array in the 3rd loop are
covered by defs in the 1st and 2nd one.

* common/loops/private109

Single dimensional private array, the two loops effectively cover the array.

* common/loops/private11

The two loops each cover disjoint triangular regions of the array. Together they
cover the entire array.

* common/loops/private110

Single dimensional private array, the two asignments to the array in the inner loop
effectively cover the entire array.

* common/loops/private111

The two loops each cover disjoint triangular regions of the array. Together they
cover the entire array.

* common/loops/private112
* common/loops/private113
* common/loops/private12
* common/loops/private13

Private array sections. Even though only a portion of the array is covered by the
definitions, but the uses are covered entirely by the defs in the array.

* common/loops/private117

Single dimensional private array, 2 inner loops; all uses of array in the 2nd loop are
covered by defs in the 1st one.

* common/loops/private118

Two dimensional private array and some loop unrolling made by hand.

* common/loops/private119

Two dimensional private array.

* common/loops/private120

Loop peeling before and after the loop.

* common/loops/private122

Two dimensional private array.

* common/loops/private123

Single dimensional private array; even though not all elements of the array are modified
in the inner loop, and all uses of array are covered.

* common/loops/private124

Two dimensional private array. Loop with condionals; both arms of the conditional cover
the entire array, there are uses in the either arm the are entirely covered.

* common/loops/private125

Two dimensional private array. Loop with condionals; the uses of the array outside the
conditional are not guaranteed to be covered entirely.

* common/loops/private126

Two dimensional array. Here array is not private, as one element is not covered in the loop.

* common/loops/private128

Two and single dimensional arrays.

* common/loops/private130

2 two dimensional and 1 single dimension array.

* common/loops/private133

Single dimensional private array, 2 inner loops.

* common/loops/private14

This is an involved test. The first j loop covers 1..m elements of the
1..n array. Since overindexing is prohibited, the compiler should assume
that 1..m is a subset of 1..n. In the k loop first m uses of the array
a() are covered by defs in the j loop. The next m+1..n iterations of the
loop do not have any uncovered uses. Therefore the array a() ought to be
a private array.

* common/loops/private15

Similar to common/loops/private14, but uses no conditionals.

* common/loops/private17

Single dimensional array, assuming no overindexing.

* common/loops/private18
* common/loops/private19
* common/loops/private20
* common/loops/private22

Single dimensional private array, 3 inner loops.

* common/loops/private21

3 inner loops, the 1st and 2nd loop together cover the entire array, and all the uses
of the array in the 3rd loop are covered.

* common/loops/private23

Private array, even though not all elements of the array are modified in inner loop,
and all uses of the array are covered.

* common/loops/private24

Conditional inside the loop, 2 inner loops in both arms.

* common/loops/private25

Conditional inside the loop, inner loops in both arms and one inner loop after
the conditional.

* common/loops/private26
* common/loops/private27
* common/loops/private28

Single dimensional private array, 3 inner loops.

* common/loops/private29

Single dimensional private array, 2 inner loops.

* common/loops/private30

Conditional inside the loop, inner loops in both arms and one inner loop before
the conditional.

* common/loops/private31

Conditional inside the loop, inner loop in both arms.

* common/loops/private32

2 loops, inner loop inside the 2nd one.

* common/loops/private33

Single dimensional private array, 2 inner loops.

* common/misctests/classes

No test found!

* common/misctests/clss14702

Checks that NullPointerException is thrown.

* common/misctests/FileViewer

Not a JIT test!

* common/misctests/Foo

Does nothing.

* common/misctests/fpustack

Not a JIT test!

* common/misctests/Jdk116JitProblem

The test illustrates a problem with the new JDK 1.1.6 JIT. The JIT compiler
included with JDK 1.1.6 takes forever to compile the transform() method, thereby
hanging up the virtual machine.

* common/misctests/JitBug

Symantec's JIT seems to optimize away important code. The test compiled using
the standard javac, demonstrates a bug in the JIT on NT4/sp3.

* common/misctests/JitBug1

Demonstrates yet another JIT bug.

* common/misctests/JitTest

Tests equals() method.

* common/misctests/NoHeader

Not a JIT test!

* common/misctests/noop

Not a JIT test!

* common/misctests/Pi

Not a JIT test!

* common/misctests/putfield00802

Tests NullPointerException. Should be removed (common/misctests/clss14702 is a better test).

* common/misctests/t5

Not a JIT test!

* common/misctests/testbug

If this test is run under JRE 1.1.6, it gets the following error: "A nonfatal internal
JIT (3.00.039(x)) error 'Unuse_LRU' hasoccu4rred in: 'testbug.dk ([BI)V': Interpreting method."

* common/misctests/whet

Not a JIT test!

* common/misctests/test.java

Not a JIT test!

* common/overflow

Test StackOverflowException.

* common/pat001

Tests arithmetic series.

* common/Peano

Computes factorials by using the Peano axioms only. Not a test!

* common/PrintProperties
* common/PrintThis

Not a JIT test!

* common/Robert

Tests some exception stuff

* common/Sleeper

Not a JIT test!

* common/tXXX

Do some arithmetic operations, but do not actually report results. Should be removed.

* common/testForBugs/4427606/TestDivByZero

Tests correctness of division by zero handling.

* common/testForBugs/4427606/Security
* common/testForBugs/4446672/TestThreadStart.java

Not a JIT test!

* common/testForBugs/CrashC1

Test for bug in C1.

* common/wide
* common/too_wide

Check for intermediate results that are too wide.

* common/TsdCase

performance benchmarks. Not a test!

* common/verifier/VerifyInitLocal

Makes sure verifier allows initialization of local fields.

* common/verifier/VerifyMergeStack

Makes sure verifier fails when two distinct types meet on operand stack.
