Mercurial > hg > truffle
annotate graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.java @ 13378:16d99e9d77ad
Options: rename flag (AOTCompilation -> ImmutableCode)
author | Bernhard Urban <bernhard.urban@jku.at> |
---|---|
date | Wed, 18 Dec 2013 11:13:17 +0100 |
parents | bb35fc7e0d68 |
children | 9267de45985b |
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.*; |
13239 | 26 import static com.oracle.graal.compiler.GraalCompiler.*; |
12655
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
27 import static com.oracle.graal.nodes.ConstantNode.*; |
9966
4158612eca60
GraalOptions: use static import
Bernhard Urban <bernhard.urban@jku.at>
parents:
9918
diff
changeset
|
28 import static com.oracle.graal.phases.GraalOptions.*; |
9910
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 org.junit.*; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
31 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
32 import com.oracle.graal.api.code.*; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
33 import com.oracle.graal.api.code.CallingConvention.Type; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
34 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
|
35 import com.oracle.graal.api.runtime.*; |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
36 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
|
37 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
|
38 import com.oracle.graal.hotspot.meta.*; |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
39 import com.oracle.graal.java.*; |
13229
325b4e4efb60
added CompilationResultBuilderFactory to support peep-hole instrumentation of methods as their code is emitted
Doug Simon <doug.simon@oracle.com>
parents:
13228
diff
changeset
|
40 import com.oracle.graal.lir.asm.*; |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
41 import com.oracle.graal.nodes.*; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
42 import com.oracle.graal.nodes.extended.*; |
12678
3332295624ec
AOTTest: use scoped option value
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
43 import com.oracle.graal.options.*; |
3332295624ec
AOTTest: use scoped option value
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
44 import com.oracle.graal.options.OptionValue.OverrideScope; |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
45 import com.oracle.graal.phases.*; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
46 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
|
47 import com.oracle.graal.phases.tiers.*; |
12488
1a4dc163cd0a
abstracted HotSpotGraalRuntime as a RuntimeProvider which removes the recent selector addition to the Graal capabilities API and also makes Truffle independent of the graal.hotspot project (GRAAL-363)
Doug Simon <doug.simon@oracle.com>
parents:
12456
diff
changeset
|
48 import com.oracle.graal.runtime.*; |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
49 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
50 /** |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
51 * use |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
52 * |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
53 * <pre> |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
54 * mx unittest AheadOfTimeCompilationTest @-XX:CompileCommand='print,*AheadOfTimeCompilationTest.*' |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
55 * </pre> |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
56 * |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
57 * to print disassembly. |
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 class AheadOfTimeCompilationTest extends GraalCompilerTest { |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
60 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
61 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
|
62 public static final String STATICFINALSTRING = "test string"; |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
63 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
64 public static Object getStaticFinalObject() { |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
65 return AheadOfTimeCompilationTest.STATICFINALOBJECT; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
66 } |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
67 |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
68 @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
|
69 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
|
70 StructuredGraph result = compile("getStaticFinalObject", true); |
12655
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
71 assertEquals(1, getConstantNodes(result).count()); |
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
72 assertEquals(getCodeCache().getTarget().wordKind, getConstantNodes(result).first().kind()); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
73 assertEquals(2, result.getNodes(FloatingReadNode.class).count()); |
11661
f8a87f3fab5a
removed the IterableNodeType marker interface from (Read|Write|ArrayRangeWrite|LoweredCompareAndSwap)Node (GRAAL-471)
Doug Simon <doug.simon@oracle.com>
parents:
10936
diff
changeset
|
74 assertEquals(0, result.getNodes().filter(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
|
75 } |
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
|
76 |
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
|
77 @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
|
78 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
|
79 StructuredGraph result = compile("getStaticFinalObject", false); |
12655
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
80 assertEquals(1, getConstantNodes(result).count()); |
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
81 assertEquals(Kind.Object, getConstantNodes(result).first().kind()); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
82 assertEquals(0, result.getNodes(FloatingReadNode.class).count()); |
11661
f8a87f3fab5a
removed the IterableNodeType marker interface from (Read|Write|ArrayRangeWrite|LoweredCompareAndSwap)Node (GRAAL-471)
Doug Simon <doug.simon@oracle.com>
parents:
10936
diff
changeset
|
83 assertEquals(0, result.getNodes().filter(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
|
84 } |
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
|
85 |
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 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
|
87 return AheadOfTimeCompilationTest.class; |
9918
ab90954e5fec
unittest/aot: disable one part of the test
Bernhard Urban <bernhard.urban@jku.at>
parents:
9910
diff
changeset
|
88 } |
ab90954e5fec
unittest/aot: disable one part of the test
Bernhard Urban <bernhard.urban@jku.at>
parents:
9910
diff
changeset
|
89 |
ab90954e5fec
unittest/aot: disable one part of the test
Bernhard Urban <bernhard.urban@jku.at>
parents:
9910
diff
changeset
|
90 @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
|
91 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
|
92 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
|
93 |
12655
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
94 NodeIterable<ConstantNode> filter = getConstantNodes(result); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
95 assertEquals(1, filter.count()); |
11959
23ccaa863eda
made CodeCacheProvider independent of MetaAccessProvider (GRAAL-511)
Doug Simon <doug.simon@oracle.com>
parents:
11752
diff
changeset
|
96 HotSpotResolvedObjectType type = (HotSpotResolvedObjectType) getMetaAccess().lookupJavaType(AheadOfTimeCompilationTest.class); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
97 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
|
98 |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
99 assertEquals(1, result.getNodes(FloatingReadNode.class).count()); |
11661
f8a87f3fab5a
removed the IterableNodeType marker interface from (Read|Write|ArrayRangeWrite|LoweredCompareAndSwap)Node (GRAAL-471)
Doug Simon <doug.simon@oracle.com>
parents:
10936
diff
changeset
|
100 assertEquals(0, result.getNodes().filter(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
|
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 |
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
|
103 @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
|
104 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
|
105 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
|
106 |
12655
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
107 NodeIterable<ConstantNode> filter = getConstantNodes(result); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
108 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
|
109 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
|
110 assertEquals(Class.class, mirror.getClass()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
111 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
|
112 |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
113 assertEquals(0, result.getNodes(FloatingReadNode.class).count()); |
11661
f8a87f3fab5a
removed the IterableNodeType marker interface from (Read|Write|ArrayRangeWrite|LoweredCompareAndSwap)Node (GRAAL-471)
Doug Simon <doug.simon@oracle.com>
parents:
10936
diff
changeset
|
114 assertEquals(0, result.getNodes().filter(ReadNode.class).count()); |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
115 } |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
116 |
10012
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
117 public static Class getPrimitiveClassObject() { |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
118 return int.class; |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
119 } |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
120 |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
121 @Test |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
122 public void testPrimitiveClassObjectAOT() { |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
123 StructuredGraph result = compile("getPrimitiveClassObject", true); |
12655
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
124 NodeIterable<ConstantNode> filter = getConstantNodes(result); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
125 assertEquals(1, filter.count()); |
11959
23ccaa863eda
made CodeCacheProvider independent of MetaAccessProvider (GRAAL-511)
Doug Simon <doug.simon@oracle.com>
parents:
11752
diff
changeset
|
126 assertEquals(getCodeCache().getTarget().wordKind, filter.first().kind()); |
10012
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
127 |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
128 assertEquals(2, result.getNodes(FloatingReadNode.class).count()); |
11661
f8a87f3fab5a
removed the IterableNodeType marker interface from (Read|Write|ArrayRangeWrite|LoweredCompareAndSwap)Node (GRAAL-471)
Doug Simon <doug.simon@oracle.com>
parents:
10936
diff
changeset
|
129 assertEquals(0, result.getNodes().filter(ReadNode.class).count()); |
10012
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
130 } |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
131 |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
132 @Test |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
133 public void testPrimitiveClassObject() { |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
134 StructuredGraph result = compile("getPrimitiveClassObject", false); |
12655
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
135 NodeIterable<ConstantNode> filter = getConstantNodes(result); |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
136 assertEquals(1, filter.count()); |
10012
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
137 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
|
138 assertEquals(Class.class, mirror.getClass()); |
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
139 assertEquals(Integer.TYPE, mirror); |
10012
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
140 |
10013
767ef799b323
unittest/aot: use assert methods instead of keyword
Bernhard Urban <bernhard.urban@jku.at>
parents:
10012
diff
changeset
|
141 assertEquals(0, result.getNodes(FloatingReadNode.class).count()); |
11661
f8a87f3fab5a
removed the IterableNodeType marker interface from (Read|Write|ArrayRangeWrite|LoweredCompareAndSwap)Node (GRAAL-471)
Doug Simon <doug.simon@oracle.com>
parents:
10936
diff
changeset
|
142 assertEquals(0, result.getNodes().filter(ReadNode.class).count()); |
10012
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
143 } |
b2f1168ee37f
unittest/aot: add test for primitive types
Bernhard Urban <bernhard.urban@jku.at>
parents:
10009
diff
changeset
|
144 |
10014
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
145 public static String getStringObject() { |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
146 return AheadOfTimeCompilationTest.STATICFINALSTRING; |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
147 } |
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 @Test |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
150 public void testStringObjectAOT() { |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
151 // embedded strings are fine |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
152 testStringObjectCommon(true); |
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 @Test |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
156 public void testStringObject() { |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
157 testStringObjectCommon(false); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
158 } |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
159 |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
160 private void testStringObjectCommon(boolean compileAOT) { |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
161 StructuredGraph result = compile("getStringObject", compileAOT); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
162 |
12655
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
163 NodeIterable<ConstantNode> filter = getConstantNodes(result); |
10014
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
164 assertEquals(1, filter.count()); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
165 Object mirror = filter.first().asConstant().asObject(); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
166 assertEquals(String.class, mirror.getClass()); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
167 assertEquals("test string", mirror); |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
168 |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
169 assertEquals(0, result.getNodes(FloatingReadNode.class).count()); |
11661
f8a87f3fab5a
removed the IterableNodeType marker interface from (Read|Write|ArrayRangeWrite|LoweredCompareAndSwap)Node (GRAAL-471)
Doug Simon <doug.simon@oracle.com>
parents:
10936
diff
changeset
|
170 assertEquals(0, result.getNodes().filter(ReadNode.class).count()); |
10014
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
171 } |
16dfdc920e77
unittest/aot: add testcase for string objects
Bernhard Urban <bernhard.urban@jku.at>
parents:
10013
diff
changeset
|
172 |
10075
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
173 public static Boolean getBoxedBoolean() { |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
174 return Boolean.valueOf(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 |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
177 @Test |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
178 public void testBoxedBooleanAOT() { |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
179 StructuredGraph result = compile("getBoxedBoolean", true); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
180 |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
181 assertEquals(2, result.getNodes(FloatingReadNode.class).count()); |
11752
7e7edb86fb43
Refactor the handling of unsafe casts to distinguish between word-object-conversions, PiNode-like type information, and real unsafe casts.
Christian Wimmer <christian.wimmer@oracle.com>
parents:
11661
diff
changeset
|
182 assertEquals(1, result.getNodes(PiNode.class).count()); |
12655
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
183 assertEquals(1, getConstantNodes(result).count()); |
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
184 ConstantNode constant = getConstantNodes(result).first(); |
10075
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
185 assertEquals(Kind.Long, constant.kind()); |
11959
23ccaa863eda
made CodeCacheProvider independent of MetaAccessProvider (GRAAL-511)
Doug Simon <doug.simon@oracle.com>
parents:
11752
diff
changeset
|
186 assertEquals(((HotSpotResolvedObjectType) getMetaAccess().lookupJavaType(Boolean.class)).klass(), constant.asConstant()); |
10075
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
187 } |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
188 |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
189 @Test |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
190 public void testBoxedBoolean() { |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
191 StructuredGraph result = compile("getBoxedBoolean", false); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
192 assertEquals(0, result.getNodes(FloatingReadNode.class).count()); |
11752
7e7edb86fb43
Refactor the handling of unsafe casts to distinguish between word-object-conversions, PiNode-like type information, and real unsafe casts.
Christian Wimmer <christian.wimmer@oracle.com>
parents:
11661
diff
changeset
|
193 assertEquals(0, result.getNodes(PiNode.class).count()); |
12655
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
194 assertEquals(1, getConstantNodes(result).count()); |
2c4aa758ee18
made ConstantNodes external to a Graph (GRAAL-508)
Doug Simon <doug.simon@oracle.com>
parents:
12488
diff
changeset
|
195 ConstantNode constant = getConstantNodes(result).first(); |
10075
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
196 assertEquals(Kind.Object, constant.kind()); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
197 assertEquals(Boolean.TRUE, constant.asConstant().asObject()); |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
198 } |
c0e9ae41ed17
unittest/aot: add testcase for BoxingSnippets
Bernhard Urban <bernhard.urban@jku.at>
parents:
10020
diff
changeset
|
199 |
9910
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
200 private StructuredGraph compile(String test, boolean compileAOT) { |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
201 StructuredGraph graph = parse(test); |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
202 ResolvedJavaMethod method = graph.method(); |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
203 |
13378
16d99e9d77ad
Options: rename flag (AOTCompilation -> ImmutableCode)
Bernhard Urban <bernhard.urban@jku.at>
parents:
13239
diff
changeset
|
204 try (OverrideScope s = OptionValue.override(ImmutableCode, compileAOT)) { |
12678
3332295624ec
AOTTest: use scoped option value
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
205 PhasePlan phasePlan = new PhasePlan(); |
3332295624ec
AOTTest: use scoped option value
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
206 GraphBuilderPhase graphBuilderPhase = new GraphBuilderPhase(getMetaAccess(), getForeignCalls(), GraphBuilderConfiguration.getDefault(), OptimisticOptimizations.ALL); |
3332295624ec
AOTTest: use scoped option value
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
207 phasePlan.addPhase(PhasePosition.AFTER_PARSING, graphBuilderPhase); |
3332295624ec
AOTTest: use scoped option value
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
208 CallingConvention cc = getCallingConvention(getCodeCache(), Type.JavaCallee, graph.method(), false); |
3332295624ec
AOTTest: use scoped option value
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
209 // create suites everytime, as we modify options for the compiler |
3332295624ec
AOTTest: use scoped option value
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
210 final Suites suitesLocal = Graal.getRequiredCapability(RuntimeProvider.class).getHostBackend().getSuites().createSuites(); |
13239 | 211 final CompilationResult compResult = compileGraph(graph, cc, method, getProviders(), getBackend(), getCodeCache().getTarget(), null, phasePlan, OptimisticOptimizations.ALL, |
212 getProfilingInfo(graph), new SpeculationLog(), suitesLocal, true, new CompilationResult(), CompilationResultBuilderFactory.Default); | |
12678
3332295624ec
AOTTest: use scoped option value
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
213 addMethod(method, compResult); |
3332295624ec
AOTTest: use scoped option value
Bernhard Urban <bernhard.urban@jku.at>
parents:
12655
diff
changeset
|
214 } |
9910
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 return graph; |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
217 } |
1dd50a788ab7
unittest: add test for OptCanonicalizeReads
Bernhard Urban <bernhard.urban@jku.at>
parents:
diff
changeset
|
218 } |