annotate test/compiler/6636138/Test2.java @ 6972:bd7a7ce2e264

6830717: replay of compilations would help with debugging Summary: When java process crashed in compiler thread, repeat the compilation process will help finding root cause. This is done with using SA dump application class data and replay data from core dump, then use debug version of jvm to recompile the problematic java method. Reviewed-by: kvn, twisti, sspitsyn Contributed-by: yumin.qi@oracle.com
author minqi
date Mon, 12 Nov 2012 14:03:53 -0800
parents c18cbe5936b8
children 7369298bec7e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
667
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
1 /*
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 952
diff changeset
2 * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
667
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
4 *
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
7 * published by the Free Software Foundation.
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
8 *
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
13 * accompanied this code).
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
14 *
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 952
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 952
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 952
diff changeset
21 * questions.
667
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
22 */
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
23
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
24 /**
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
25 * @test
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
26 * @bug 6636138
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
27 * @summary SuperWord::co_locate_pack(Node_List* p) generates memory graph that leads to memory order violation.
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
28 *
711
9610b2a8ab4e 6829021: tests for 6636138 use UseSuperword instead of UseSuperWord
cfang
parents: 667
diff changeset
29 * @run main/othervm -server -Xbatch -XX:CompileOnly=Test2.shift Test2
667
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
30 */
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
31
777
f53b154d959d 6837906: compiler tests of 6636138 fail with IllegalAccessException
twisti
parents: 711
diff changeset
32 public class Test2 {
667
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
33
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
34 public static void init(int src[]) {
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
35 // Initialize the array
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
36 for (int i = 0; i < src.length; i++)
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
37 src[i] = i;
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
38 }
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
39
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
40 public static void shift(int src[]) {
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
41 //left-shift the array
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
42 for (int i = src.length-1; i > 0; i--){
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
43 int tmp = src[i];
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
44 src[i] = src[i-1];
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
45 src[i-1] = tmp;
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
46 }
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
47 }
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
48
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
49 public static void verify(int src[]) {
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
50 for (int i = 0; i < src.length; i++){
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
51 int value = (i-1 + src.length)%src.length; // correct value after shifting
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
52 if (src[i] != value) {
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
53 System.out.println("Error: src["+i+"] should be "+ value + " instead of " + src[i]);
952
ace8397c8563 6876276: assert(!is_visited,"visit only once")
cfang
parents: 777
diff changeset
54 System.exit(97);
667
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
55 }
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
56 }
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
57 }
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
58
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
59 public static void test() {
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
60 int[] src = new int[10];
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
61 init(src);
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
62 shift(src);
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
63 verify(src);
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
64 }
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
65
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
66 public static void main(String[] args) {
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
67 for (int i=0; i< 2000; i++)
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
68 test();
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
69 }
78af5ae8e731 6636138: UseSuperWord enabled failure
cfang
parents:
diff changeset
70 }