annotate graal/com.oracle.graal.snippets.test/src/com/oracle/graal/snippets/IntrinsificationTest.java @ 7225:31c4d9f9e922

adder better CHA support added more test cases for inlining and intrinsification
author Christian Haeubl <haeubl@ssw.jku.at>
date Fri, 14 Dec 2012 12:05:35 +0100
parents fb16d8681ddc
children 5b969d6f4606
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
1 /*
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
2 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
4 *
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
7 * published by the Free Software Foundation.
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
8 *
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
13 * accompanied this code).
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
14 *
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
18 *
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
21 * questions.
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
22 */
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
23 package com.oracle.graal.snippets;
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
24
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
25 import static org.junit.Assert.*;
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
26
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
27 import java.util.concurrent.*;
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
28
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
29 import org.junit.*;
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
30
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
31 import sun.misc.*;
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
32
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
33 import com.oracle.graal.api.code.*;
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
34 import com.oracle.graal.compiler.test.*;
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
35 import com.oracle.graal.debug.*;
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
36 import com.oracle.graal.graph.*;
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
37 import com.oracle.graal.nodes.*;
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
38 import com.oracle.graal.nodes.calc.*;
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
39 import com.oracle.graal.phases.*;
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
40 import com.oracle.graal.phases.common.*;
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
41 import com.oracle.graal.snippets.nodes.*;
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
42
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
43 /**
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
44 * Tests if compiler intrinsics are inlined correctly. Most test cases only assert that there are no remaining
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
45 * invocations in the graph. This is sufficient if the method that is being intrinsified is a native method.
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
46 * For Java methods, additional checks are necessary.
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
47 */
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
48 public class IntrinsificationTest extends GraalCompilerTest {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
49 @Test
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
50 public void testObjectIntrinsics() {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
51 test("getClassSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
52 test("objectHashCodeSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
53 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
54
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
55 @SuppressWarnings("all")
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
56 public static boolean getClassSnippet(Object obj, Class<?> clazz) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
57 return obj.getClass() == clazz;
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
58 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
59 @SuppressWarnings("all")
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
60 public static int objectHashCodeSnippet(TestClassA obj) {
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
61 return obj.hashCode();
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
62 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
63
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
64
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
65 @Test
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
66 public void testClassIntrinsics() {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
67 test("getModifiersSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
68 // test("isInstanceSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
69 test("isInterfaceSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
70 test("isArraySnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
71 test("isPrimitiveSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
72 test("getSuperClassSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
73 test("getComponentTypeSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
74 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
75
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
76 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
77 public static int getModifiersSnippet(Class<?> clazz) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
78 return clazz.getModifiers();
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
79 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
80 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
81 public static boolean isInstanceSnippet(Class<?> clazz) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
82 return clazz.isInstance(Number.class);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
83 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
84 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
85 public static boolean isInterfaceSnippet(Class<?> clazz) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
86 return clazz.isInterface();
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
87 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
88 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
89 public static boolean isArraySnippet(Class<?> clazz) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
90 return clazz.isArray();
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
91 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
92 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
93 public static boolean isPrimitiveSnippet(Class<?> clazz) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
94 return clazz.isPrimitive();
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
95 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
96 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
97 public static Class<?> getSuperClassSnippet(Class<?> clazz) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
98 return clazz.getSuperclass();
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
99 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
100 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
101 public static Class<?> getComponentTypeSnippet(Class<?> clazz) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
102 return clazz.getComponentType();
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
103 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
104
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
105
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
106 @Test
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
107 public void testThreadIntrinsics() {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
108 test("currentThreadSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
109 test("threadIsInterruptedSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
110 test("threadInterruptedSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
111 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
112
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
113 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
114 public static Thread currentThreadSnippet() {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
115 return Thread.currentThread();
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
116 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
117 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
118 public static boolean threadIsInterruptedSnippet(Thread thread) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
119 return thread.isInterrupted();
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
120 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
121 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
122 public static boolean threadInterruptedSnippet() {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
123 return Thread.interrupted();
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
124 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
125
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
126
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
127 @Test
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
128 public void testSystemIntrinsics() {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
129 test("systemTimeSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
130 test("systemIdentityHashCode");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
131 // test("arraycopySnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
132 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
133
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
134 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
135 public static long systemTimeSnippet() {
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
136 return System.currentTimeMillis() +
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
137 System.nanoTime();
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
138 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
139 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
140 public static int systemIdentityHashCode(Object obj) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
141 return System.identityHashCode(obj);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
142 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
143 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
144 public static void arraycopySnippet(int[] src, int srcPos, int[] dest, int destPos, int length) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
145 System.arraycopy(src, srcPos, dest, destPos, length);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
146 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
147
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
148
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
149 @Test
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
150 public void testUnsafeIntrinsics() {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
151 test("unsafeCompareAndSwapIntSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
152 test("unsafeCompareAndSwapLongSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
153 test("unsafeCompareAndSwapObjectSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
154
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
155 test("unsafeGetBooleanSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
156 test("unsafeGetByteSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
157 test("unsafeGetShortSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
158 test("unsafeGetCharSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
159 test("unsafeGetIntSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
160 test("unsafeGetFloatSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
161 test("unsafeGetDoubleSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
162 test("unsafeGetObjectSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
163
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
164 test("unsafePutBooleanSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
165 test("unsafePutByteSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
166 test("unsafePutShortSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
167 test("unsafePutCharSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
168 test("unsafePutIntSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
169 test("unsafePutFloatSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
170 test("unsafePutDoubleSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
171 test("unsafePutObjectSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
172
7224
fb16d8681ddc bugfixes for compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7223
diff changeset
173 test("unsafeDirectMemoryReadSnippet");
fb16d8681ddc bugfixes for compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7223
diff changeset
174 test("unsafeDirectMemoryWriteSnippet");
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
175 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
176
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
177 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
178 public static boolean unsafeCompareAndSwapIntSnippet(Unsafe unsafe, Object obj, long offset) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
179 return unsafe.compareAndSwapInt(obj, offset, 0, 1);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
180 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
181 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
182 public static boolean unsafeCompareAndSwapLongSnippet(Unsafe unsafe, Object obj, long offset) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
183 return unsafe.compareAndSwapLong(obj, offset, 0, 1);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
184 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
185 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
186 public static boolean unsafeCompareAndSwapObjectSnippet(Unsafe unsafe, Object obj, long offset) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
187 return unsafe.compareAndSwapObject(obj, offset, null, new Object());
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
188 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
189 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
190 public static boolean unsafeGetBooleanSnippet(Unsafe unsafe, Object obj, long offset) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
191 return unsafe.getBoolean(obj, offset) &&
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
192 unsafe.getBooleanVolatile(obj, offset);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
193 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
194 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
195 public static int unsafeGetByteSnippet(Unsafe unsafe, Object obj, long offset) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
196 return unsafe.getByte(obj, offset) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
197 unsafe.getByteVolatile(obj, offset);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
198 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
199 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
200 public static int unsafeGetShortSnippet(Unsafe unsafe, Object obj, long offset) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
201 return unsafe.getShort(obj, offset) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
202 unsafe.getShortVolatile(obj, offset);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
203 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
204 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
205 public static int unsafeGetCharSnippet(Unsafe unsafe, Object obj, long offset) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
206 return unsafe.getChar(obj, offset) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
207 unsafe.getCharVolatile(obj, offset);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
208 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
209 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
210 public static int unsafeGetIntSnippet(Unsafe unsafe, Object obj, long offset) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
211 return unsafe.getInt(obj, offset) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
212 unsafe.getIntVolatile(obj, offset);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
213 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
214 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
215 public static long unsafeGetLongSnippet(Unsafe unsafe, Object obj, long offset) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
216 return unsafe.getLong(obj, offset) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
217 unsafe.getLongVolatile(obj, offset);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
218 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
219 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
220 public static float unsafeGetFloatSnippet(Unsafe unsafe, Object obj, long offset) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
221 return unsafe.getFloat(obj, offset) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
222 unsafe.getFloatVolatile(obj, offset);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
223 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
224 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
225 public static double unsafeGetDoubleSnippet(Unsafe unsafe, Object obj, long offset) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
226 return unsafe.getDouble(obj, offset) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
227 unsafe.getDoubleVolatile(obj, offset);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
228 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
229 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
230 public static boolean unsafeGetObjectSnippet(Unsafe unsafe, Object obj, long offset) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
231 return unsafe.getObject(obj, offset) == unsafe.getObjectVolatile(obj, offset);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
232 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
233 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
234 public static void unsafePutBooleanSnippet(Unsafe unsafe, Object obj, long offset, boolean value) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
235 unsafe.putBoolean(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
236 unsafe.putBooleanVolatile(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
237 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
238 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
239 public static void unsafePutByteSnippet(Unsafe unsafe, Object obj, long offset, byte value) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
240 unsafe.putByte(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
241 unsafe.putByteVolatile(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
242 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
243 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
244 public static void unsafePutShortSnippet(Unsafe unsafe, Object obj, long offset, short value) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
245 unsafe.putShort(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
246 unsafe.putShortVolatile(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
247 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
248 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
249 public static void unsafePutCharSnippet(Unsafe unsafe, Object obj, long offset, char value) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
250 unsafe.putChar(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
251 unsafe.putCharVolatile(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
252 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
253 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
254 public static void unsafePutIntSnippet(Unsafe unsafe, Object obj, long offset, int value) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
255 unsafe.putInt(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
256 unsafe.putIntVolatile(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
257 unsafe.putOrderedInt(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
258 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
259 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
260 public static void unsafePutLongSnippet(Unsafe unsafe, Object obj, long offset, long value) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
261 unsafe.putLong(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
262 unsafe.putLongVolatile(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
263 unsafe.putOrderedLong(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
264 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
265 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
266 public static void unsafePutFloatSnippet(Unsafe unsafe, Object obj, long offset, float value) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
267 unsafe.putFloat(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
268 unsafe.putFloatVolatile(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
269 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
270 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
271 public static void unsafePutDoubleSnippet(Unsafe unsafe, Object obj, long offset, double value) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
272 unsafe.putDouble(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
273 unsafe.putDoubleVolatile(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
274 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
275 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
276 public static void unsafePutObjectSnippet(Unsafe unsafe, Object obj, long offset, Object value) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
277 unsafe.putObject(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
278 unsafe.putObjectVolatile(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
279 unsafe.putOrderedObject(obj, offset, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
280 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
281 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
282 public static double unsafeDirectMemoryReadSnippet(Unsafe unsafe, long address) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
283 // Unsafe.getBoolean(long) and Unsafe.getObject(long) do not exist
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
284 return unsafe.getByte(address) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
285 unsafe.getShort(address) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
286 unsafe.getChar(address) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
287 unsafe.getInt(address) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
288 unsafe.getLong(address) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
289 unsafe.getFloat(address) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
290 unsafe.getDouble(address);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
291 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
292 @SuppressWarnings("all")
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
293 public static void unsafeDirectMemoryWriteSnippet(Unsafe unsafe, long address, byte value) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
294 // Unsafe.putBoolean(long) and Unsafe.putObject(long) do not exist
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
295 unsafe.putByte(address, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
296 unsafe.putShort(address, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
297 unsafe.putChar(address, (char) value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
298 unsafe.putInt(address, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
299 unsafe.putLong(address, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
300 unsafe.putFloat(address, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
301 unsafe.putDouble(address, value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
302 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
303
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
304
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
305 @Test
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
306 public void testMathIntrinsics() {
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
307 assertInGraph(assertNotInGraph(test("mathAbsSnippet"), IfNode.class), MathIntrinsicNode.class); // Java
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
308 test("mathSnippet");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
309 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
310
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
311 @SuppressWarnings("all")
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
312 public static double mathAbsSnippet(double value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
313 return Math.abs(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
314 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
315 @SuppressWarnings("all")
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
316 public static double mathSnippet(double value) {
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
317 return Math.sqrt(value) +
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
318 Math.log(value) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
319 Math.log10(value) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
320 Math.sin(value) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
321 Math.cos(value) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
322 Math.tan(value);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
323 // Math.exp(value) +
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
324 // Math.pow(value, 13);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
325 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
326
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
327
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
328 @Test
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
329 public void testIntegerIntrinsics() {
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
330 assertInGraph(test("integerReverseBytesSnippet"), ReverseBytesNode.class); // Java
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
331 assertInGraph(test("integerNumberOfLeadingZerosSnippet"), BitScanReverseNode.class); // Java
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
332 assertInGraph(test("integerNumberOfTrailingZerosSnippet"), BitScanForwardNode.class); // Java
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
333 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
334
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
335 @SuppressWarnings("all")
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
336 public static int integerReverseBytesSnippet(int value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
337 return Integer.reverseBytes(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
338 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
339 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
340 public static int integerNumberOfLeadingZerosSnippet(int value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
341 return Integer.numberOfLeadingZeros(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
342 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
343 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
344 public static int integerNumberOfTrailingZerosSnippet(int value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
345 return Integer.numberOfTrailingZeros(value);
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
346 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
347
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
348
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
349 @Test
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
350 public void testLongIntrinsics() {
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
351 assertInGraph(test("longReverseBytesSnippet"), ReverseBytesNode.class); // Java
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
352 assertInGraph(test("longNumberOfLeadingZerosSnippet"), BitScanReverseNode.class); // Java
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
353 assertInGraph(test("longNumberOfTrailingZerosSnippet"), BitScanForwardNode.class); // Java
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
354 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
355
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
356 @SuppressWarnings("all")
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
357 public static long longReverseBytesSnippet(long value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
358 return Long.reverseBytes(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
359 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
360 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
361 public static long longNumberOfLeadingZerosSnippet(long value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
362 return Long.numberOfLeadingZeros(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
363 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
364 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
365 public static long longNumberOfTrailingZerosSnippet(long value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
366 return Long.numberOfTrailingZeros(value);
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
367 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
368
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
369
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
370 @Test
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
371 public void testFloatIntrinsics() {
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
372 assertInGraph(test("floatToIntBitsSnippet"), ConvertNode.class); // Java
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
373 test("intBitsToFloatSnippet");
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
374 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
375
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
376 @SuppressWarnings("all")
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
377 public static int floatToIntBitsSnippet(float value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
378 return Float.floatToIntBits(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
379 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
380 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
381 public static float intBitsToFloatSnippet(int value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
382 return Float.intBitsToFloat(value);
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
383 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
384
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
385
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
386 @Test
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
387 public void testDoubleIntrinsics() {
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
388 assertInGraph(test("doubleToLongBitsSnippet"), ConvertNode.class); // Java
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
389 test("longBitsToDoubleSnippet");
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
390 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
391
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
392 @SuppressWarnings("all")
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
393 public static long doubleToLongBitsSnippet(double value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
394 return Double.doubleToLongBits(value);
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
395 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
396 @SuppressWarnings("all")
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
397 public static double longBitsToDoubleSnippet(long value) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
398 return Double.longBitsToDouble(value);
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
399 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
400
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
401
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
402 private StructuredGraph test(final String snippet) {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
403 return Debug.scope("IntrinsificationTest", new DebugDumpScope(snippet), new Callable<StructuredGraph>() {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
404 @Override
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
405 public StructuredGraph call() {
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
406 StructuredGraph graph = parse(snippet);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
407 PhasePlan phasePlan = getDefaultPhasePlan();
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
408 Assumptions assumptions = new Assumptions(true);
7223
e2ea829fafd9 use CHA more frequently for inlining
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7220
diff changeset
409 new ComputeProbabilityPhase().apply(graph);
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
410 Debug.dump(graph, "Graph");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
411 new InliningPhase(null, runtime(), null, assumptions, null, phasePlan, OptimisticOptimizations.ALL).apply(graph);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
412 Debug.dump(graph, "Graph");
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
413 new CanonicalizerPhase(null, runtime(), assumptions).apply(graph);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
414 new DeadCodeEliminationPhase().apply(graph);
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
415
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
416 assertNotInGraph(graph, Invoke.class);
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
417 return graph;
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
418 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
419 });
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
420 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
421
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
422 private static StructuredGraph assertNotInGraph(StructuredGraph graph, Class<?> clazz) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
423 for (Node node: graph.getNodes()) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
424 if (clazz.isInstance(node)) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
425 fail(node.toString());
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
426 }
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
427 }
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
428 return graph;
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
429 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
430
7225
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
431 private static StructuredGraph assertInGraph(StructuredGraph graph, Class<?> clazz) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
432 for (Node node: graph.getNodes()) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
433 if (clazz.isInstance(node)) {
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
434 return graph;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
435 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
436 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
437 fail("Graph does not contain a node of class " + clazz.getName());
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
438 return graph;
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
439 }
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
440
31c4d9f9e922 adder better CHA support
Christian Haeubl <haeubl@ssw.jku.at>
parents: 7224
diff changeset
441 private static class TestClassA {
7220
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
442 }
fcae6d960acd added more compiler intrinsics
Christian Haeubl <haeubl@ssw.jku.at>
parents:
diff changeset
443 }