c4ec887262
Reviewed-by: kvn, mseledtsov
185 lines
5.0 KiB
Java
185 lines
5.0 KiB
Java
/*
|
|
* 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.
|
|
*/
|
|
// srm 961012
|
|
// Test if array stores and reads are correct for
|
|
// integral types and floating points
|
|
|
|
|
|
/*
|
|
* @test
|
|
*
|
|
* @summary converted from VM Testbase jit/Arrays/ArrayTests.
|
|
* VM Testbase keywords: [jit, quick]
|
|
*
|
|
* @library /vmTestbase
|
|
* /test/lib
|
|
* @run driver jdk.test.lib.FileInstaller . .
|
|
* @run main/othervm jit.Arrays.ArrayTests.ArrayTests
|
|
*/
|
|
|
|
package jit.Arrays.ArrayTests;
|
|
|
|
import nsk.share.TestFailure;
|
|
|
|
public class ArrayTests {
|
|
int base_array[];
|
|
static int the_int_res = 200;
|
|
static int the_char_res = 13041864;
|
|
static int the_byte_res = -312;
|
|
static int n = 400;
|
|
|
|
ArrayTests() {
|
|
base_array = new int [n];
|
|
int start_value = n/2;
|
|
for (int i=0; i<n; i++) {
|
|
base_array[i]= start_value;
|
|
start_value--;
|
|
}
|
|
};
|
|
|
|
void print() {
|
|
for (int i=0; i<base_array.length; i++)
|
|
System.out.print(" "+base_array[i]);
|
|
// System.out.println("Result is " + the_res);
|
|
}
|
|
|
|
boolean with_chars () {
|
|
char char_array[] = new char[n];
|
|
int res = 0;
|
|
for (int i=0; i<n; i++) {
|
|
char_array[i] = (char)base_array[i];
|
|
// System.out.print (" " + (int) char_array[i]);
|
|
}
|
|
for (int i=0; i<n; i++) {
|
|
res += (int) char_array[i];
|
|
}
|
|
System.out.println("chars " + res + " == " + the_char_res);
|
|
return (res==the_char_res);
|
|
}
|
|
|
|
boolean with_bytes () {
|
|
byte byte_array[] = new byte[n];
|
|
int res = 0;
|
|
for (int i=0; i<n; i++) {
|
|
byte_array[i] = (byte)base_array[i];
|
|
}
|
|
for (int i=0; i<n; i++) {
|
|
res += (int) byte_array[i];
|
|
}
|
|
System.out.println("bytes " + res + " == " + the_byte_res);
|
|
return res==the_byte_res;
|
|
}
|
|
|
|
boolean with_shorts () {
|
|
short short_array[] = new short[n];
|
|
int res = 0;
|
|
for (int i=0; i<n; i++) {
|
|
short_array[i] = (short)base_array[i];
|
|
}
|
|
for (int i=0; i<n; i++) {
|
|
res += (int) short_array[i];
|
|
}
|
|
System.out.println("shorts " + res + " == " + the_int_res);
|
|
return res==the_int_res;
|
|
}
|
|
|
|
boolean with_ints () {
|
|
int res = 0;
|
|
for (int i=0; i<n; i++) {
|
|
res += base_array[i];
|
|
}
|
|
// base_array is integer
|
|
return (res==the_int_res);
|
|
}
|
|
|
|
boolean with_longs() {
|
|
long long_array[] = new long[n];
|
|
int res = 0;
|
|
for (int i=0; i<n; i++) {
|
|
long_array[i] = (long)base_array[i];
|
|
}
|
|
for (int i=0; i<n; i++) {
|
|
res += (int) long_array[i];
|
|
}
|
|
System.out.println("longs " + res + " == " + the_int_res);
|
|
return res==the_int_res;
|
|
}
|
|
|
|
boolean with_floats () {
|
|
float float_array[] = new float[n];
|
|
int res = 0;
|
|
for (int i=0; i<n; i++) {
|
|
float_array[i] = (float)base_array[i];
|
|
}
|
|
for (int i=0; i<n; i++) {
|
|
res += (int) float_array[i];
|
|
}
|
|
System.out.println("floats " + res + " == " + the_int_res);
|
|
return res==the_int_res;
|
|
}
|
|
|
|
boolean with_doubles () {
|
|
double double_array[] = new double[n];
|
|
int res = 0;
|
|
for (int i=0; i<n; i++) {
|
|
double_array[i] = (double)base_array[i];
|
|
}
|
|
for (int i=0; i<n; i++) {
|
|
res += (int) double_array[i];
|
|
}
|
|
System.out.println("doubles " + res + " == " + the_int_res);
|
|
return res==the_int_res;
|
|
}
|
|
|
|
void check(String msg, boolean flag) {
|
|
if (!flag) {
|
|
System.out.println("ERROR in " + msg);
|
|
}
|
|
}
|
|
|
|
boolean execute() {
|
|
// print();
|
|
boolean res = true;
|
|
res = res & with_chars(); check("chars",res);
|
|
res = res & with_shorts(); check("shorts",res);
|
|
res = res & with_bytes(); check("bytes",res);
|
|
res = res & with_ints(); check("ints",res);
|
|
res = res & with_longs(); check("longs",res);
|
|
res = res & with_floats(); check("floats",res);
|
|
res = res & with_doubles(); check("doubles",res);
|
|
|
|
return res;
|
|
}
|
|
|
|
|
|
public static void main (String s[]) {
|
|
boolean res = true;
|
|
ArrayTests at = new ArrayTests();
|
|
res = res & at.execute();
|
|
|
|
if (res) System.out.println("Array read/write testsOK (srm 10/22/96)");
|
|
else throw new TestFailure("Error in read/write array tests!");
|
|
}
|
|
|
|
}
|