annotate test/compiler/5057225/Test5057225.java @ 3011:f00918f35c7f

inlining and runtime interface related changes: added codeSize() and compilerStorage() to RiMethod HotSpotMethodResolved uses reflective methods instead of vmIds and survives compilations HotSpotResolvedType.isInitialized not represented as field (can change) inlining stores graphs into method objects and reuses them
author Lukas Stadler <lukas.stadler@jku.at>
date Thu, 16 Jun 2011 20:36:17 +0200
parents c18cbe5936b8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
824
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
1 /*
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 824
diff changeset
2 * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
824
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
4 *
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
7 * published by the Free Software Foundation.
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
8 *
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
13 * accompanied this code).
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
14 *
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
18 *
1552
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 824
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 824
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
c18cbe5936b8 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 824
diff changeset
21 * questions.
824
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
22 */
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
23
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
24 /**
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
25 * @test
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
26 * @bug 5057225
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
27 * @summary Remove useless I2L conversions
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
28 *
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
29 * @run main/othervm -Xcomp -XX:CompileOnly=Test5057225.doload Test5057225
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
30 */
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
31
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
32 import java.net.URLClassLoader;
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
33
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
34 public class Test5057225 {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
35 static byte[] ba = new byte[] { -1 };
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
36 static short[] sa = new short[] { -1 };
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
37 static int[] ia = new int[] { -1 };
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
38
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
39 static final long[] BYTE_MASKS = {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
40 0x0FL,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
41 0x7FL, // 7-bit
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
42 0xFFL,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
43 };
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
44
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
45 static final long[] SHORT_MASKS = {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
46 0x000FL,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
47 0x007FL, // 7-bit
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
48 0x00FFL,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
49 0x0FFFL,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
50 0x3FFFL, // 14-bit
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
51 0x7FFFL, // 15-bit
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
52 0xFFFFL,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
53 };
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
54
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
55 static final long[] INT_MASKS = {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
56 0x0000000FL,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
57 0x0000007FL, // 7-bit
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
58 0x000000FFL,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
59 0x00000FFFL,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
60 0x00003FFFL, // 14-bit
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
61 0x00007FFFL, // 15-bit
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
62 0x0000FFFFL,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
63 0x00FFFFFFL,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
64 0x7FFFFFFFL, // 31-bit
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
65 0xFFFFFFFFL,
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
66 };
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
67
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
68 public static void main(String[] args) throws Exception {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
69 for (int i = 0; i < BYTE_MASKS.length; i++) {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
70 System.setProperty("value", "" + BYTE_MASKS[i]);
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
71 loadAndRunClass("Test5057225$loadUB2L");
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
72 }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
73
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
74 for (int i = 0; i < SHORT_MASKS.length; i++) {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
75 System.setProperty("value", "" + SHORT_MASKS[i]);
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
76 loadAndRunClass("Test5057225$loadUS2L");
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
77 }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
78
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
79 for (int i = 0; i < INT_MASKS.length; i++) {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
80 System.setProperty("value", "" + INT_MASKS[i]);
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
81 loadAndRunClass("Test5057225$loadUI2L");
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
82 }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
83 }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
84
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
85 static void check(long result, long expected) {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
86 if (result != expected)
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
87 throw new InternalError(result + " != " + expected);
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
88 }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
89
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
90 static void loadAndRunClass(String classname) throws Exception {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
91 Class cl = Class.forName(classname);
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
92 URLClassLoader apploader = (URLClassLoader) cl.getClassLoader();
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
93 ClassLoader loader = new URLClassLoader(apploader.getURLs(), apploader.getParent());
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
94 Class c = loader.loadClass(classname);
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
95 Runnable r = (Runnable) c.newInstance();
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
96 r.run();
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
97 }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
98
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
99 public static class loadUB2L implements Runnable {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
100 static final long MASK;
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
101 static {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
102 long value = 0;
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
103 try {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
104 value = Long.decode(System.getProperty("value"));
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
105 } catch (Throwable e) {}
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
106 MASK = value;
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
107 }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
108
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
109 public void run() { check(doload(ba), MASK); }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
110 static long doload(byte[] ba) { return ba[0] & MASK; }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
111 }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
112
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
113 public static class loadUS2L implements Runnable {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
114 static final long MASK;
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
115 static {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
116 long value = 0;
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
117 try {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
118 value = Long.decode(System.getProperty("value"));
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
119 } catch (Throwable e) {}
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
120 MASK = value;
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
121 }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
122
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
123 public void run() { check(doload(sa), MASK); }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
124 static long doload(short[] sa) { return sa[0] & MASK; }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
125 }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
126
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
127 public static class loadUI2L implements Runnable {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
128 static final long MASK;
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
129 static {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
130 long value = 0;
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
131 try {
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
132 value = Long.decode(System.getProperty("value"));
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
133 } catch (Throwable e) {}
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
134 MASK = value;
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
135 }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
136
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
137 public void run() { check(doload(ia), MASK); }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
138 static long doload(int[] ia) { return ia[0] & MASK; }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
139 }
18a08a7e16b5 5057225: Remove useless I2L conversions
twisti
parents:
diff changeset
140 }