1 /* 2 * Copyright (c) 2008, 2020, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 // srm 961012 24 // Test if array stores and reads are correct for 25 // integral types and floating points 26 27 28 /* 29 * @test 30 * 31 * @summary converted from VM Testbase jit/Arrays/ArrayTests. 32 * VM Testbase keywords: [jit, quick] 33 * 34 * @library /vmTestbase 35 * /test/lib 36 * @run main/othervm jit.Arrays.ArrayTests.ArrayTests 37 */ 38 39 package jit.Arrays.ArrayTests; 40 41 import nsk.share.TestFailure; 42 43 public class ArrayTests { 44 int base_array[]; 45 static int the_int_res = 200; 46 static int the_char_res = 13041864; 47 static int the_byte_res = -312; 48 static int n = 400; 49 ArrayTests()50 ArrayTests() { 51 base_array = new int [n]; 52 int start_value = n/2; 53 for (int i=0; i<n; i++) { 54 base_array[i]= start_value; 55 start_value--; 56 } 57 }; 58 print()59 void print() { 60 for (int i=0; i<base_array.length; i++) 61 System.out.print(" "+base_array[i]); 62 // System.out.println("Result is " + the_res); 63 } 64 with_chars()65 boolean with_chars () { 66 char char_array[] = new char[n]; 67 int res = 0; 68 for (int i=0; i<n; i++) { 69 char_array[i] = (char)base_array[i]; 70 // System.out.print (" " + (int) char_array[i]); 71 } 72 for (int i=0; i<n; i++) { 73 res += (int) char_array[i]; 74 } 75 System.out.println("chars " + res + " == " + the_char_res); 76 return (res==the_char_res); 77 } 78 with_bytes()79 boolean with_bytes () { 80 byte byte_array[] = new byte[n]; 81 int res = 0; 82 for (int i=0; i<n; i++) { 83 byte_array[i] = (byte)base_array[i]; 84 } 85 for (int i=0; i<n; i++) { 86 res += (int) byte_array[i]; 87 } 88 System.out.println("bytes " + res + " == " + the_byte_res); 89 return res==the_byte_res; 90 } 91 with_shorts()92 boolean with_shorts () { 93 short short_array[] = new short[n]; 94 int res = 0; 95 for (int i=0; i<n; i++) { 96 short_array[i] = (short)base_array[i]; 97 } 98 for (int i=0; i<n; i++) { 99 res += (int) short_array[i]; 100 } 101 System.out.println("shorts " + res + " == " + the_int_res); 102 return res==the_int_res; 103 } 104 with_ints()105 boolean with_ints () { 106 int res = 0; 107 for (int i=0; i<n; i++) { 108 res += base_array[i]; 109 } 110 // base_array is integer 111 return (res==the_int_res); 112 } 113 with_longs()114 boolean with_longs() { 115 long long_array[] = new long[n]; 116 int res = 0; 117 for (int i=0; i<n; i++) { 118 long_array[i] = (long)base_array[i]; 119 } 120 for (int i=0; i<n; i++) { 121 res += (int) long_array[i]; 122 } 123 System.out.println("longs " + res + " == " + the_int_res); 124 return res==the_int_res; 125 } 126 with_floats()127 boolean with_floats () { 128 float float_array[] = new float[n]; 129 int res = 0; 130 for (int i=0; i<n; i++) { 131 float_array[i] = (float)base_array[i]; 132 } 133 for (int i=0; i<n; i++) { 134 res += (int) float_array[i]; 135 } 136 System.out.println("floats " + res + " == " + the_int_res); 137 return res==the_int_res; 138 } 139 with_doubles()140 boolean with_doubles () { 141 double double_array[] = new double[n]; 142 int res = 0; 143 for (int i=0; i<n; i++) { 144 double_array[i] = (double)base_array[i]; 145 } 146 for (int i=0; i<n; i++) { 147 res += (int) double_array[i]; 148 } 149 System.out.println("doubles " + res + " == " + the_int_res); 150 return res==the_int_res; 151 } 152 check(String msg, boolean flag)153 void check(String msg, boolean flag) { 154 if (!flag) { 155 System.out.println("ERROR in " + msg); 156 } 157 } 158 execute()159 boolean execute() { 160 // print(); 161 boolean res = true; 162 res = res & with_chars(); check("chars",res); 163 res = res & with_shorts(); check("shorts",res); 164 res = res & with_bytes(); check("bytes",res); 165 res = res & with_ints(); check("ints",res); 166 res = res & with_longs(); check("longs",res); 167 res = res & with_floats(); check("floats",res); 168 res = res & with_doubles(); check("doubles",res); 169 170 return res; 171 } 172 173 main(String s[])174 public static void main (String s[]) { 175 boolean res = true; 176 ArrayTests at = new ArrayTests(); 177 res = res & at.execute(); 178 179 if (res) System.out.println("Array read/write testsOK (srm 10/22/96)"); 180 else throw new TestFailure("Error in read/write array tests!"); 181 } 182 183 } 184