annotate graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/MemoryUsageBenchmark.java @ 16716:bb030c4a6822

improvements to MemoryUsageBenchmark
author Doug Simon <doug.simon@oracle.com>
date Wed, 06 Aug 2014 17:49:04 +0200
parents bd6b44b04143
children c880fb576c97
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
1 /*
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
2 * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
4 *
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
7 * published by the Free Software Foundation.
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
8 *
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
13 * accompanied this code).
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
14 *
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
18 *
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
21 * questions.
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
22 */
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
23 package com.oracle.graal.hotspot.test;
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
24
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
25 import static com.oracle.graal.debug.internal.MemUseTrackerImpl.*;
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
26 import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*;
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
27 import static com.oracle.graal.nodes.StructuredGraph.*;
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
28
16716
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
29 import com.oracle.graal.api.runtime.*;
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
30 import com.oracle.graal.compiler.test.*;
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
31 import com.oracle.graal.debug.*;
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
32 import com.oracle.graal.debug.internal.*;
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
33 import com.oracle.graal.hotspot.*;
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
34 import com.oracle.graal.hotspot.meta.*;
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
35 import com.oracle.graal.printer.*;
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
36
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
37 /**
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
38 * Used to benchmark memory usage during Graal compilation. Run with:
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
39 *
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
40 * <pre>
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
41 * mx vm -XX:-UseGraalClassLoader -cp @com.oracle.graal.hotspot.test com.oracle.graal.hotspot.test.MemoryUsageBenchmark
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
42 * </pre>
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
43 */
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
44 public class MemoryUsageBenchmark extends GraalCompilerTest {
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
45
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
46 public static int simple(int a, int b) {
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
47 return a + b;
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
48 }
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
49
16716
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
50 public static synchronized int complex(CharSequence cs) {
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
51 if (cs instanceof String) {
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
52 return cs.hashCode();
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
53 }
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
54
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
55 if (cs instanceof StringBuffer) {
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
56 int[] hash = {0};
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
57 cs.chars().forEach(c -> hash[0] += c);
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
58 return hash[0];
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
59 }
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
60
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
61 int res = 0;
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
62
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
63 // Exercise lock elimination
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
64 synchronized (cs) {
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
65 res = cs.length();
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
66 }
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
67 synchronized (cs) {
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
68 res = cs.hashCode() ^ 31;
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
69 }
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
70
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
71 for (int i = 0; i < cs.length(); i++) {
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
72 res *= cs.charAt(i);
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
73 }
16716
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
74
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
75 // A fixed length loop with some canonicalizable arithmetics will
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
76 // activate loop unrolling and more canonicalization
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
77 int sum = 0;
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
78 for (int i = 0; i < 5; i++) {
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
79 sum += i * 2;
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
80 }
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
81 res += sum;
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
82
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
83 // Activates escape-analysis
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
84 res += new String("asdf").length();
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
85
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
86 return res;
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
87 }
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
88
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
89 static class MemoryUsageCloseable implements AutoCloseable {
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
90
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
91 private final long start;
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
92 private final String name;
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
93
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
94 public MemoryUsageCloseable(String name) {
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
95 this.name = name;
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
96 this.start = getCurrentThreadAllocatedBytes();
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
97 }
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
98
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
99 @Override
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
100 public void close() {
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
101 long end = getCurrentThreadAllocatedBytes();
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
102 long allocated = end - start;
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
103 System.out.println(name + ": " + allocated);
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
104 }
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
105 }
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
106
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
107 public static void main(String[] args) {
16716
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
108 // Ensure a Graal runtime is initialized prior to Debug being initialized as the former
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
109 // may include processing command line options used by the latter.
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
110 Graal.getRuntime();
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
111
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
112 // Ensure a debug configuration for this thread is initialized
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
113 if (Debug.isEnabled() && DebugScope.getConfig() == null) {
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
114 DebugEnvironment.initialize(System.out);
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
115 }
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
116 new MemoryUsageBenchmark().run();
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
117 }
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
118
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
119 private void doCompilation(String methodName) {
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
120 HotSpotResolvedJavaMethod method = (HotSpotResolvedJavaMethod) getMetaAccess().lookupJavaMethod(getMethod(methodName));
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
121 HotSpotBackend backend = runtime().getHostBackend();
16716
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
122
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
123 // invalidate any existing compiled code
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
124 method.reprofile();
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
125
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
126 int id = method.allocateCompileId(INVOCATION_ENTRY_BCI);
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
127 long ctask = 0L;
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
128 CompilationTask task = new CompilationTask(backend, method, INVOCATION_ENTRY_BCI, ctask, id);
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
129 task.runCompilation();
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
130 }
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
131
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
132 private static final boolean verbose = Boolean.getBoolean("verbose");
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
133
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
134 private void compileAndTime(String methodName) {
16716
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
135
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
136 // Parse in eager mode to resolve methods/fields/classes
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
137 parseEager(methodName);
bb030c4a6822 improvements to MemoryUsageBenchmark
Doug Simon <doug.simon@oracle.com>
parents: 16696
diff changeset
138
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
139 // Warm up and initialize compiler phases used by this compilation
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
140 for (int i = 0; i < 10; i++) {
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
141 try (MemoryUsageCloseable c = verbose ? new MemoryUsageCloseable(methodName + "[" + i + "]") : null) {
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
142 doCompilation(methodName);
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
143 }
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
144 }
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
145
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
146 try (MemoryUsageCloseable c = new MemoryUsageCloseable(methodName + "[warm]")) {
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
147 doCompilation(methodName);
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
148 }
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
149 }
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
150
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
151 public void run() {
16696
bd6b44b04143 moved MemoryUsageBenchmark to graal.hotspot.test and use CompilationTask to drive compilation
Doug Simon <doug.simon@oracle.com>
parents: 16690
diff changeset
152 compileAndTime("complex");
16690
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
153 compileAndTime("simple");
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
154 }
7e8ecfe7d2e5 preliminary compiler memory usage benchmark
Doug Simon <doug.simon@oracle.com>
parents:
diff changeset
155 }