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.