test/compiler/7192963/TestShortVect.java

Mon, 28 Jul 2014 15:06:38 -0700

author
fzhinkin
date
Mon, 28 Jul 2014 15:06:38 -0700
changeset 6997
dbb05f6d93c4
parent 0
f90c822e73f8
permissions
-rw-r--r--

8051344: JVM crashed in Compile::start() during method parsing w/ UseRTMDeopt turned on
Summary: call rtm_deopt() only if there were no compilation bailouts before.
Reviewed-by: kvn

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation.
aoqi@0 8 *
aoqi@0 9 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 12 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 13 * accompanied this code).
aoqi@0 14 *
aoqi@0 15 * You should have received a copy of the GNU General Public License version
aoqi@0 16 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 18 *
aoqi@0 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 20 * or visit www.oracle.com if you need additional information or have any
aoqi@0 21 * questions.
aoqi@0 22 *
aoqi@0 23 */
aoqi@0 24
aoqi@0 25 /**
aoqi@0 26 * @test
aoqi@0 27 * @bug 7192963
aoqi@0 28 * @summary assert(_in[req-1] == this) failed: Must pass arg count to 'new'
aoqi@0 29 *
aoqi@0 30 * @run main/othervm/timeout=400 -Xbatch -Xmx64m TestShortVect
aoqi@0 31 */
aoqi@0 32
aoqi@0 33 public class TestShortVect {
aoqi@0 34 private static final int ARRLEN = 997;
aoqi@0 35 private static final int ITERS = 11000;
aoqi@0 36 public static void main(String args[]) {
aoqi@0 37 System.out.println("Testing Short vectors");
aoqi@0 38 int errn = test();
aoqi@0 39 if (errn > 0) {
aoqi@0 40 System.err.println("FAILED: " + errn + " errors");
aoqi@0 41 System.exit(97);
aoqi@0 42 }
aoqi@0 43 System.out.println("PASSED");
aoqi@0 44 }
aoqi@0 45
aoqi@0 46 static int test() {
aoqi@0 47 short[] a0 = new short[ARRLEN];
aoqi@0 48 short[] a1 = new short[ARRLEN];
aoqi@0 49 // Initialize
aoqi@0 50 for (int i=0; i<ARRLEN; i++) {
aoqi@0 51 a1[i] = (short)i;
aoqi@0 52 }
aoqi@0 53 System.out.println("Warmup");
aoqi@0 54 for (int i=0; i<ITERS; i++) {
aoqi@0 55 test_init(a0);
aoqi@0 56 test_addi(a0, a1);
aoqi@0 57 test_lsai(a0, a1);
aoqi@0 58 test_unrl_init(a0);
aoqi@0 59 test_unrl_addi(a0, a1);
aoqi@0 60 test_unrl_lsai(a0, a1);
aoqi@0 61 }
aoqi@0 62 // Test and verify results
aoqi@0 63 System.out.println("Verification");
aoqi@0 64 int errn = 0;
aoqi@0 65 {
aoqi@0 66 test_init(a0);
aoqi@0 67 for (int i=0; i<ARRLEN; i++) {
aoqi@0 68 errn += verify("test_init: ", i, a0[i], (short)(i&3));
aoqi@0 69 }
aoqi@0 70 test_addi(a0, a1);
aoqi@0 71 for (int i=0; i<ARRLEN; i++) {
aoqi@0 72 errn += verify("test_addi: ", i, a0[i], (short)(i+(i&3)));
aoqi@0 73 }
aoqi@0 74 test_lsai(a0, a1);
aoqi@0 75 for (int i=0; i<ARRLEN; i++) {
aoqi@0 76 errn += verify("test_lsai: ", i, a0[i], (short)(i<<(i&3)));
aoqi@0 77 }
aoqi@0 78 test_unrl_init(a0);
aoqi@0 79 for (int i=0; i<ARRLEN; i++) {
aoqi@0 80 errn += verify("test_unrl_init: ", i, a0[i], (short)(i&3));
aoqi@0 81 }
aoqi@0 82 test_unrl_addi(a0, a1);
aoqi@0 83 for (int i=0; i<ARRLEN; i++) {
aoqi@0 84 errn += verify("test_unrl_addi: ", i, a0[i], (short)(i+(i&3)));
aoqi@0 85 }
aoqi@0 86 test_unrl_lsai(a0, a1);
aoqi@0 87 for (int i=0; i<ARRLEN; i++) {
aoqi@0 88 errn += verify("test_unrl_lsai: ", i, a0[i], (short)(i<<(i&3)));
aoqi@0 89 }
aoqi@0 90 }
aoqi@0 91
aoqi@0 92 if (errn > 0)
aoqi@0 93 return errn;
aoqi@0 94
aoqi@0 95 System.out.println("Time");
aoqi@0 96 long start, end;
aoqi@0 97
aoqi@0 98 start = System.currentTimeMillis();
aoqi@0 99 for (int i=0; i<ITERS; i++) {
aoqi@0 100 test_init(a0);
aoqi@0 101 }
aoqi@0 102 end = System.currentTimeMillis();
aoqi@0 103 System.out.println("test_init: " + (end - start));
aoqi@0 104
aoqi@0 105 start = System.currentTimeMillis();
aoqi@0 106 for (int i=0; i<ITERS; i++) {
aoqi@0 107 test_addi(a0, a1);
aoqi@0 108 }
aoqi@0 109 end = System.currentTimeMillis();
aoqi@0 110 System.out.println("test_addi: " + (end - start));
aoqi@0 111
aoqi@0 112 start = System.currentTimeMillis();
aoqi@0 113 for (int i=0; i<ITERS; i++) {
aoqi@0 114 test_lsai(a0, a1);
aoqi@0 115 }
aoqi@0 116 end = System.currentTimeMillis();
aoqi@0 117 System.out.println("test_lsai: " + (end - start));
aoqi@0 118
aoqi@0 119 start = System.currentTimeMillis();
aoqi@0 120 for (int i=0; i<ITERS; i++) {
aoqi@0 121 test_unrl_init(a0);
aoqi@0 122 }
aoqi@0 123 end = System.currentTimeMillis();
aoqi@0 124 System.out.println("test_unrl_init: " + (end - start));
aoqi@0 125
aoqi@0 126 start = System.currentTimeMillis();
aoqi@0 127 for (int i=0; i<ITERS; i++) {
aoqi@0 128 test_unrl_addi(a0, a1);
aoqi@0 129 }
aoqi@0 130 end = System.currentTimeMillis();
aoqi@0 131 System.out.println("test_unrl_addi: " + (end - start));
aoqi@0 132
aoqi@0 133 start = System.currentTimeMillis();
aoqi@0 134 for (int i=0; i<ITERS; i++) {
aoqi@0 135 test_unrl_lsai(a0, a1);
aoqi@0 136 }
aoqi@0 137 end = System.currentTimeMillis();
aoqi@0 138 System.out.println("test_unrl_lsai: " + (end - start));
aoqi@0 139
aoqi@0 140 return errn;
aoqi@0 141 }
aoqi@0 142
aoqi@0 143 static void test_init(short[] a0) {
aoqi@0 144 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 145 a0[i] = (short)(i&3);
aoqi@0 146 }
aoqi@0 147 }
aoqi@0 148 static void test_addi(short[] a0, short[] a1) {
aoqi@0 149 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 150 a0[i] = (short)(a1[i]+(i&3));
aoqi@0 151 }
aoqi@0 152 }
aoqi@0 153 static void test_lsai(short[] a0, short[] a1) {
aoqi@0 154 for (int i = 0; i < a0.length; i+=1) {
aoqi@0 155 a0[i] = (short)(a1[i]<<(i&3));
aoqi@0 156 }
aoqi@0 157 }
aoqi@0 158 static void test_unrl_init(short[] a0) {
aoqi@0 159 int i = 0;
aoqi@0 160 for (; i < a0.length-4; i+=4) {
aoqi@0 161 a0[i+0] = 0;
aoqi@0 162 a0[i+1] = 1;
aoqi@0 163 a0[i+2] = 2;
aoqi@0 164 a0[i+3] = 3;
aoqi@0 165 }
aoqi@0 166 for (; i < a0.length; i++) {
aoqi@0 167 a0[i] = (short)(i&3);
aoqi@0 168 }
aoqi@0 169 }
aoqi@0 170 static void test_unrl_addi(short[] a0, short[] a1) {
aoqi@0 171 int i = 0;
aoqi@0 172 for (; i < a0.length-4; i+=4) {
aoqi@0 173 a0[i+0] = (short)(a1[i+0]+0);
aoqi@0 174 a0[i+1] = (short)(a1[i+1]+1);
aoqi@0 175 a0[i+2] = (short)(a1[i+2]+2);
aoqi@0 176 a0[i+3] = (short)(a1[i+3]+3);
aoqi@0 177 }
aoqi@0 178 for (; i < a0.length; i++) {
aoqi@0 179 a0[i] = (short)(a1[i]+(i&3));
aoqi@0 180 }
aoqi@0 181 }
aoqi@0 182 static void test_unrl_lsai(short[] a0, short[] a1) {
aoqi@0 183 int i = 0;
aoqi@0 184 for (; i < a0.length-4; i+=4) {
aoqi@0 185 a0[i+0] = (short)(a1[i+0]<<0);
aoqi@0 186 a0[i+1] = (short)(a1[i+1]<<1);
aoqi@0 187 a0[i+2] = (short)(a1[i+2]<<2);
aoqi@0 188 a0[i+3] = (short)(a1[i+3]<<3);
aoqi@0 189 }
aoqi@0 190 for (; i < a0.length; i++) {
aoqi@0 191 a0[i] = (short)(a1[i]<<(i&3));
aoqi@0 192 }
aoqi@0 193 }
aoqi@0 194
aoqi@0 195 static int verify(String text, int i, short elem, short val) {
aoqi@0 196 if (elem != val) {
aoqi@0 197 System.err.println(text + "[" + i + "] = " + elem + " != " + val);
aoqi@0 198 return 1;
aoqi@0 199 }
aoqi@0 200 return 0;
aoqi@0 201 }
aoqi@0 202 }
aoqi@0 203

mercurial