Mercurial > hg > truffle
annotate graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.java @ 10075:c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
author | Bernhard Urban <bernhard.urban@jku.at> |
---|---|
date | Mon, 17 Jun 2013 22:09:44 +0200 |
parents | 4ebe31e19892 |
children | 0eeb9f8dab9b |
rev | line source |
---|---|
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
1 /* |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
4 * |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
8 * |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
13 * accompanied this code). |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
14 * |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
18 * |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
21 * questions. |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
22 */ |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
23 package com.oracle.graal.hotspot.test; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
24 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
25 import static com.oracle.graal.api.code.CodeUtil.*; |
9966
4158612eca60
GraalOptions: use static import
Bernhard Urban <bernhard.urban@jku.at>
parents:
9918
diff
changeset
|
26 import static com.oracle.graal.phases.GraalOptions.*; |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
27 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
28 import org.junit.*; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
29 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
30 import com.oracle.graal.api.code.*; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
31 import com.oracle.graal.api.code.CallingConvention.Type; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
32 import com.oracle.graal.api.meta.*; |
10003
e23b0486e750
unittest/aot: create suites on every compilation
Bernhard Urban <bernhard.urban@jku.at>
parents:
9969
diff
changeset
|
33 import com.oracle.graal.api.runtime.*; |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
34 import com.oracle.graal.compiler.*; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
35 import com.oracle.graal.compiler.test.*; |
10004
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
36 import com.oracle.graal.graph.iterators.*; |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
37 import com.oracle.graal.hotspot.meta.*; |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
38 import com.oracle.graal.java.*; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
39 import com.oracle.graal.nodes.*; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
40 import com.oracle.graal.nodes.extended.*; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
41 import com.oracle.graal.phases.*; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
42 import com.oracle.graal.phases.PhasePlan.PhasePosition; |
10003
e23b0486e750
unittest/aot: create suites on every compilation
Bernhard Urban <bernhard.urban@jku.at>
parents:
9969
diff
changeset
|
43 import com.oracle.graal.phases.tiers.*; |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
44 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
45 /** |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
46 * use |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
47 * |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
48 * <pre> |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
49 * mx unittest AheadOfTimeCompilationTest @-XX:CompileCommand='print,*AheadOfTimeCompilationTest.*' |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
50 * </pre> |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
51 * |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
52 * to print disassembly. |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
53 */ |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
54 public class AheadOfTimeCompilationTest extends GraalCompilerTest { |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
55 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
56 public static final Object STATICFINALOBJECT = new Object(); |
10014
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
57 public static final String STATICFINALSTRING = "test string"; |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
58 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
59 public static Object getStaticFinalObject() { |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
60 return AheadOfTimeCompilationTest.STATICFINALOBJECT; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
61 } |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
62 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
63 @Test |
10004
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
64 public void testStaticFinalObjectAOT() { |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
65 StructuredGraph result = compile("getStaticFinalObject", true); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
66 assertEquals(1, result.getNodes().filter(ConstantNode.class).count()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
67 assertEquals(runtime.getTarget().wordKind, result.getNodes().filter(ConstantNode.class).first().kind()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
68 assertEquals(2, result.getNodes(FloatingReadNode.class).count()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
69 assertEquals(0, result.getNodes(ReadNode.class).count()); |
10004
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
70 } |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
71 |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
72 @Test |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
73 public void testStaticFinalObject() { |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
74 StructuredGraph result = compile("getStaticFinalObject", false); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
75 assertEquals(1, result.getNodes().filter(ConstantNode.class).count()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
76 assertEquals(Kind.Object, result.getNodes().filter(ConstantNode.class).first().kind()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
77 assertEquals(0, result.getNodes(FloatingReadNode.class).count()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
78 assertEquals(0, result.getNodes(ReadNode.class).count()); |
10004
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
79 } |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
80 |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
81 public static Class getClassObject() { |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
82 return AheadOfTimeCompilationTest.class; |
9918
ab90954e5fec
unittest/aot: disable one part of the test
Bernhard Urban <bernhard.urban@jku.at>
parents:
9910
diff
changeset
|
83 } |
ab90954e5fec
unittest/aot: disable one part of the test
Bernhard Urban <bernhard.urban@jku.at>
parents:
9910
diff
changeset
|
84 |
ab90954e5fec
unittest/aot: disable one part of the test
Bernhard Urban <bernhard.urban@jku.at>
parents:
9910
diff
changeset
|
85 @Test |
10004
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
86 public void testClassObjectAOT() { |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
87 StructuredGraph result = compile("getClassObject", true); |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
88 |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
89 NodeIterable<ConstantNode> filter = result.getNodes().filter(ConstantNode.class); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
90 assertEquals(1, filter.count()); |
10004
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
91 HotSpotResolvedObjectType type = (HotSpotResolvedObjectType) runtime.lookupJavaType(AheadOfTimeCompilationTest.class); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
92 assertEquals(type.klass(), filter.first().asConstant()); |
10004
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
93 |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
94 assertEquals(1, result.getNodes(FloatingReadNode.class).count()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
95 assertEquals(0, result.getNodes(ReadNode.class).count()); |
10004
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
96 } |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
97 |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
98 @Test |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
99 public void testClassObject() { |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
100 StructuredGraph result = compile("getClassObject", false); |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
101 |
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
102 NodeIterable<ConstantNode> filter = result.getNodes().filter(ConstantNode.class); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
103 assertEquals(1, filter.count()); |
10004
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
104 Object mirror = filter.first().asConstant().asObject(); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
105 assertEquals(Class.class, mirror.getClass()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
106 assertEquals(AheadOfTimeCompilationTest.class, mirror); |
10004
c4a0e878868f
class constants: add hotspot specific phase to load java mirror via klass* (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10003
diff
changeset
|
107 |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
108 assertEquals(0, result.getNodes(FloatingReadNode.class).count()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
109 assertEquals(0, result.getNodes(ReadNode.class).count()); |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
110 } |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
111 |
10012
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
112 public static Class getPrimitiveClassObject() { |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
113 return int.class; |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
114 } |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
115 |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
116 @Test |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
117 public void testPrimitiveClassObjectAOT() { |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
118 StructuredGraph result = compile("getPrimitiveClassObject", true); |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
119 NodeIterable<ConstantNode> filter = result.getNodes().filter(ConstantNode.class); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
120 assertEquals(1, filter.count()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
121 assertEquals(runtime.getTarget().wordKind, filter.first().kind()); |
10012
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
122 |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
123 assertEquals(2, result.getNodes(FloatingReadNode.class).count()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
124 assertEquals(0, result.getNodes(ReadNode.class).count()); |
10012
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
125 } |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
126 |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
127 @Test |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
128 public void testPrimitiveClassObject() { |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
129 StructuredGraph result = compile("getPrimitiveClassObject", false); |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
130 NodeIterable<ConstantNode> filter = result.getNodes().filter(ConstantNode.class); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
131 assertEquals(1, filter.count()); |
10012
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
132 Object mirror = filter.first().asConstant().asObject(); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
133 assertEquals(Class.class, mirror.getClass()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
134 assertEquals(Integer.TYPE, mirror); |
10012
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
135 |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
136 assertEquals(0, result.getNodes(FloatingReadNode.class).count()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
137 assertEquals(0, result.getNodes(ReadNode.class).count()); |
10012
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
138 } |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
139 |
10014
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
140 public static String getStringObject() { |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
141 return AheadOfTimeCompilationTest.STATICFINALSTRING; |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
142 } |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
143 |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
144 @Test |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
145 public void testStringObjectAOT() { |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
146 // embedded strings are fine |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
147 testStringObjectCommon(true); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
148 } |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
149 |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
150 @Test |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
151 public void testStringObject() { |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
152 testStringObjectCommon(false); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
153 } |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
154 |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
155 private void testStringObjectCommon(boolean compileAOT) { |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
156 StructuredGraph result = compile("getStringObject", compileAOT); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
157 |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
158 NodeIterable<ConstantNode> filter = result.getNodes().filter(ConstantNode.class); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
159 assertEquals(1, filter.count()); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
160 Object mirror = filter.first().asConstant().asObject(); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
161 assertEquals(String.class, mirror.getClass()); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
162 assertEquals("test string", mirror); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
163 |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
164 assertEquals(0, result.getNodes(FloatingReadNode.class).count()); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
165 assertEquals(0, result.getNodes(ReadNode.class).count()); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
166 } |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
167 |
10075
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
168 public static Boolean getBoxedBoolean() { |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
169 return Boolean.valueOf(true); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
170 } |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
171 |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
172 @Test |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
173 public void testBoxedBooleanAOT() { |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
174 StructuredGraph result = compile("getBoxedBoolean", true); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
175 |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
176 assertEquals(2, result.getNodes(FloatingReadNode.class).count()); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
177 assertEquals(1, result.getNodes(UnsafeCastNode.class).count()); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
178 assertEquals(1, result.getNodes().filter(ConstantNode.class).count()); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
179 ConstantNode constant = result.getNodes().filter(ConstantNode.class).first(); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
180 assertEquals(Kind.Long, constant.kind()); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
181 assertEquals(((HotSpotResolvedObjectType) runtime.lookupJavaType(Boolean.class)).klass(), constant.asConstant()); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
182 } |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
183 |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
184 @Test |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
185 public void testBoxedBoolean() { |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
186 StructuredGraph result = compile("getBoxedBoolean", false); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
187 assertEquals(0, result.getNodes(FloatingReadNode.class).count()); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
188 assertEquals(0, result.getNodes(UnsafeCastNode.class).count()); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
189 assertEquals(1, result.getNodes().filter(ConstantNode.class).count()); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
190 ConstantNode constant = result.getNodes().filter(ConstantNode.class).first(); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
191 assertEquals(Kind.Object, constant.kind()); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
192 assertEquals(Boolean.TRUE, constant.asConstant().asObject()); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
193 } |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
194 |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
195 private StructuredGraph compile(String test, boolean compileAOT) { |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
196 StructuredGraph graph = parse(test); |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
197 ResolvedJavaMethod method = graph.method(); |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
198 |
10009
b5c87b5c6e9c
add option to enable ahead of time compilation for hotspot (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10004
diff
changeset
|
199 boolean originalSetting = AOTCompilation.getValue(); |
b5c87b5c6e9c
add option to enable ahead of time compilation for hotspot (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10004
diff
changeset
|
200 AOTCompilation.setValue(compileAOT); |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
201 PhasePlan phasePlan = new PhasePlan(); |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
202 GraphBuilderPhase graphBuilderPhase = new GraphBuilderPhase(runtime, GraphBuilderConfiguration.getDefault(), OptimisticOptimizations.ALL); |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
203 phasePlan.addPhase(PhasePosition.AFTER_PARSING, graphBuilderPhase); |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
204 editPhasePlan(method, graph, phasePlan); |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
205 CallingConvention cc = getCallingConvention(runtime, Type.JavaCallee, graph.method(), false); |
10003
e23b0486e750
unittest/aot: create suites on every compilation
Bernhard Urban <bernhard.urban@jku.at>
parents:
9969
diff
changeset
|
206 // create suites everytime, as we modify options for the compiler |
e23b0486e750
unittest/aot: create suites on every compilation
Bernhard Urban <bernhard.urban@jku.at>
parents:
9969
diff
changeset
|
207 final Suites suitesLocal = Graal.getRequiredCapability(SuitesProvider.class).createSuites(); |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
208 final CompilationResult compResult = GraalCompiler.compileGraph(graph, cc, method, runtime, replacements, backend, runtime().getTarget(), null, phasePlan, OptimisticOptimizations.ALL, |
10003
e23b0486e750
unittest/aot: create suites on every compilation
Bernhard Urban <bernhard.urban@jku.at>
parents:
9969
diff
changeset
|
209 new SpeculationLog(), suitesLocal); |
10019
6e4b72bcc97f
Remove graph from HotSpotNMethod
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
10004
diff
changeset
|
210 addMethod(method, compResult); |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
211 |
10009
b5c87b5c6e9c
add option to enable ahead of time compilation for hotspot (GRAAL-290)
Bernhard Urban <bernhard.urban@jku.at>
parents:
10004
diff
changeset
|
212 AOTCompilation.setValue(originalSetting); |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
213 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
214 return graph; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
215 } |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
216 } |