Mercurial > hg > truffle
annotate test/compiler/6837094/Test.java @ 13723:1834ae0bc965
GuardLowering: do not use trapping accesses for guards with a speculation
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Tue, 21 Jan 2014 18:35:46 +0100 |
parents | c18cbe5936b8 |
children |
rev | line source |
---|---|
820 | 1 /* |
852
84770322b304
6861513: correct copyright attribution in test for 6837094 and 6860469
never
parents:
820
diff
changeset
|
2 * Copyright 2009 Google Inc. All Rights Reserved. |
820 | 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 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
852
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
852
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:
852
diff
changeset
|
21 * questions. |
820 | 22 * |
23 */ | |
24 | |
25 /** | |
26 * @test | |
27 * @bug 6837094 | |
28 * @summary False positive for "meet not symmetric" failure | |
29 * | |
30 * @run main/othervm -Xbatch -XX:CompileOnly=Test.collectIs,Test$Factory$1.getArray,Test$Factory$2.getArray Test | |
31 */ | |
32 | |
33 import java.util.Set; | |
34 import java.util.HashSet; | |
35 | |
36 public class Test { | |
37 | |
38 private interface Factory<M extends Interface> { | |
39 Factory<Child0> Zero = new Factory<Child0>() { | |
40 public Child0[] getArray() { return new Child0[1]; } | |
41 }; | |
42 | |
43 Factory<Child1> One = new Factory<Child1>() { | |
44 public Child1[] getArray() { return new Child1[1]; } | |
45 }; | |
46 | |
47 M[] getArray(); | |
48 } | |
49 | |
50 /** | |
51 * C2 asserts when compiling this method. Bimorphic inlining happens at | |
52 * getArray call site. A Phi in the catch block tries to join the meet type | |
53 * from he inline site (Parent[]) with the type expected by CI (Interface[]). | |
54 * | |
55 * C2 throws an assert when it doesn't need to. | |
56 */ | |
57 private static <I extends Interface> void collectIs( | |
58 Factory<I> factory, Set<Interface> s) { | |
59 for (I i : factory.getArray()) { | |
60 try { | |
61 s.add(i); | |
62 } catch (Exception e) { | |
63 } | |
64 } | |
65 } | |
66 | |
67 static public void main(String argv[]) { | |
68 Set<Interface> s = new HashSet(); | |
69 | |
70 for (int i = 0; i < 25000; i++) { | |
71 collectIs(Factory.Zero, s); | |
72 collectIs(Factory.One, s); | |
73 } | |
74 } | |
75 } | |
76 | |
77 /** | |
78 * Establish necessary class hierarchy | |
79 */ | |
80 | |
81 interface Interface { | |
82 } | |
83 | |
84 class Parent { | |
85 } | |
86 | |
87 class Child0 extends Parent implements Interface { | |
88 } | |
89 | |
90 class Child1 extends Parent implements Interface { | |
91 } | |
92 | |
93 class Child2 extends Parent implements Interface { | |
94 } |