annotate test/compiler/6636138/Test2.java @ 3011:f00918f35c7f

inlining and runtime interface related changes: added codeSize() and compilerStorage() to RiMethod HotSpotMethodResolved uses reflective methods instead of vmIds and survives compilations HotSpotResolvedType.isInitialized not represented as field (can change) inlining stores graphs into method objects and reuses them
author Lukas Stadler <lukas.stadler@jku.at>
date Thu, 16 Jun 2011 20:36:17 +0200
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 }