Mercurial > hg > truffle
annotate src/share/vm/jvmci/jvmciCompiler.cpp @ 21791:cd36556e1b78
Remove conditional makefile-based compilation of jvmci from mx_graal.py
author | Stefan Anzinger <stefan.anzinger@oracle.com> |
---|---|
date | Mon, 08 Jun 2015 14:25:25 +0200 |
parents | 4c146c9367b6 |
children |
rev | line source |
---|---|
2516
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
1 /* |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
4 * |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
7 * published by the Free Software Foundation. |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
8 * |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
13 * accompanied this code). |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
14 * |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
18 * |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
a384fac3fd34
Removed anything OSR-related.
Thomas Wuerthinger <thomas@wuerthinger.net>
parents:
2502
diff
changeset
|
21 * questions. |
1410
b30a2cd5e3a2
Added methods to c1x_VMExits.cpp
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
1407
diff
changeset
|
22 */ |
b30a2cd5e3a2
Added methods to c1x_VMExits.cpp
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
1407
diff
changeset
|
23 |
2045
9c96c873c42b
Fix includes to match new hotspot mechanism.
Thomas Wuerthinger <wuerthinger@ssw.jku.at>
parents:
1942
diff
changeset
|
24 #include "precompiled.hpp" |
6559
d5f7e737827f
fixed compilation issues on Solaris. When using SunStudio compiler, Solaris build with DONT_USE_PRECOMPILED_HEADER
Laurent Daynes <Laurent.Daynes@oracle.com>
parents:
6442
diff
changeset
|
25 #include "memory/oopFactory.hpp" |
d5f7e737827f
fixed compilation issues on Solaris. When using SunStudio compiler, Solaris build with DONT_USE_PRECOMPILED_HEADER
Laurent Daynes <Laurent.Daynes@oracle.com>
parents:
6442
diff
changeset
|
26 #include "runtime/javaCalls.hpp" |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
27 #include "jvmci/jvmciCompiler.hpp" |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
28 #include "jvmci/jvmciEnv.hpp" |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
29 #include "jvmci/jvmciRuntime.hpp" |
5150
fdd9dd4508fa
some GC fixes
Christian Haeubl <christian.haeubl@oracle.com>
parents:
5130
diff
changeset
|
30 #include "runtime/compilationPolicy.hpp" |
14881
1415a62ac8b2
allow to force bootstrap in tiered
Bernhard Urban <bernhard.urban@jku.at>
parents:
14875
diff
changeset
|
31 #include "runtime/globals_extension.hpp" |
1406
35069ca331f2
Hooked C1XCompiler class into the system.
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
diff
changeset
|
32 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
33 JVMCICompiler* JVMCICompiler::_instance = NULL; |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
34 elapsedTimer JVMCICompiler::_codeInstallTimer; |
1429
abc670a709dc
* -XX:TraceC1X=0...5 controls the native c1x tracing
Lukas Stadler <lukas.stadler@oracle.com>
parents:
1428
diff
changeset
|
35 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
36 JVMCICompiler::JVMCICompiler() : AbstractCompiler(jvmci) { |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
37 #ifdef COMPILERJVMCI |
16006
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
38 _bootstrapping = false; |
16399
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
39 _methodsCompiled = 0; |
15582
063ec2920d21
made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents:
15495
diff
changeset
|
40 #endif |
1429
abc670a709dc
* -XX:TraceC1X=0...5 controls the native c1x tracing
Lukas Stadler <lukas.stadler@oracle.com>
parents:
1428
diff
changeset
|
41 assert(_instance == NULL, "only one instance allowed"); |
abc670a709dc
* -XX:TraceC1X=0...5 controls the native c1x tracing
Lukas Stadler <lukas.stadler@oracle.com>
parents:
1428
diff
changeset
|
42 _instance = this; |
abc670a709dc
* -XX:TraceC1X=0...5 controls the native c1x tracing
Lukas Stadler <lukas.stadler@oracle.com>
parents:
1428
diff
changeset
|
43 } |
abc670a709dc
* -XX:TraceC1X=0...5 controls the native c1x tracing
Lukas Stadler <lukas.stadler@oracle.com>
parents:
1428
diff
changeset
|
44 |
1406
35069ca331f2
Hooked C1XCompiler class into the system.
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
diff
changeset
|
45 // Initialization |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
46 void JVMCICompiler::initialize() { |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
47 #ifdef COMPILERJVMCI |
15582
063ec2920d21
made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents:
15495
diff
changeset
|
48 if (!UseCompiler || !should_perform_init()) { |
15463
a20be10ad437
made Graal work with the HotSpot compiler queue and compiler threads, enabled by -XX:-UseGraalCompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
15106
diff
changeset
|
49 return; |
a20be10ad437
made Graal work with the HotSpot compiler queue and compiler threads, enabled by -XX:-UseGraalCompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
15106
diff
changeset
|
50 } |
a20be10ad437
made Graal work with the HotSpot compiler queue and compiler threads, enabled by -XX:-UseGraalCompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
15106
diff
changeset
|
51 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
52 BufferBlob* buffer_blob = JVMCIRuntime::initialize_buffer_blob(); |
16399
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
53 if (buffer_blob == NULL) { |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
54 set_state(failed); |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
55 } else { |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
56 set_state(initialized); |
13156
2e76d94f8383
propagate code-cache-full message up to Java to throw exception instead of crashing VM
twisti
parents:
13106
diff
changeset
|
57 } |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
58 // JVMCI is considered as application code so we need to |
18144
70077134cabc
graalCompiler: remove unnecessary HandleMark.
Bernhard Urban <bernhard.urban@jku.at>
parents:
18134
diff
changeset
|
59 // stop the VM deferring compilation now. |
70077134cabc
graalCompiler: remove unnecessary HandleMark.
Bernhard Urban <bernhard.urban@jku.at>
parents:
18134
diff
changeset
|
60 CompilationPolicy::completed_vm_startup(); |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
61 #endif // COMPILERJVMCI |
1406
35069ca331f2
Hooked C1XCompiler class into the system.
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
diff
changeset
|
62 } |
35069ca331f2
Hooked C1XCompiler class into the system.
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
diff
changeset
|
63 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
64 #ifdef COMPILERJVMCI |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
65 void JVMCICompiler::bootstrap() { |
16006
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
66 JavaThread* THREAD = JavaThread::current(); |
16136
d32be0297274
support -XX:+BootstrapGraal in conjunction with -XX:-UseGraalCompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16105
diff
changeset
|
67 _bootstrapping = true; |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
68 // Allow bootstrap to perform JVMCI compilations of itself |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
69 bool c1only = JVMCICompileWithC1Only; |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
70 JVMCICompileWithC1Only = false; |
16399
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
71 ResourceMark rm; |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
72 HandleMark hm; |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
73 if (PrintBootstrap) { |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
74 tty->print("Bootstrapping JVMCI"); |
16399
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
75 } |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
76 jlong start = os::javaTimeMillis(); |
16136
d32be0297274
support -XX:+BootstrapGraal in conjunction with -XX:-UseGraalCompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16105
diff
changeset
|
77 |
16399
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
78 Array<Method*>* objectMethods = InstanceKlass::cast(SystemDictionary::Object_klass())->methods(); |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
79 // Initialize compile queue with a selected set of methods. |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
80 int len = objectMethods->length(); |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
81 for (int i = 0; i < len; i++) { |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
82 methodHandle mh = objectMethods->at(i); |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
83 if (!mh->is_native() && !mh->is_static() && !mh->is_initializer()) { |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
84 ResourceMark rm; |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
85 int hot_count = 10; // TODO: what's the appropriate value? |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
86 CompileBroker::compile_method(mh, InvocationEntryBci, CompLevel_full_optimization, mh, hot_count, "bootstrap", THREAD); |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
87 } |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
88 } |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
89 |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
90 int qsize; |
19764 | 91 bool first_round = true; |
16399
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
92 int z = 0; |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
93 do { |
19764 | 94 // Loop until there is something in the queue. |
95 do { | |
96 os::sleep(THREAD, 100, true); | |
97 qsize = CompileBroker::queue_size(CompLevel_full_optimization); | |
98 } while (first_round && qsize == 0); | |
99 first_round = false; | |
16399
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
100 if (PrintBootstrap) { |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
101 while (z < (_methodsCompiled / 100)) { |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
102 ++z; |
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
103 tty->print_raw("."); |
16136
d32be0297274
support -XX:+BootstrapGraal in conjunction with -XX:-UseGraalCompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16105
diff
changeset
|
104 } |
d32be0297274
support -XX:+BootstrapGraal in conjunction with -XX:-UseGraalCompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16105
diff
changeset
|
105 } |
16399
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
106 } while (qsize != 0); |
16136
d32be0297274
support -XX:+BootstrapGraal in conjunction with -XX:-UseGraalCompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16105
diff
changeset
|
107 |
16399
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
108 if (PrintBootstrap) { |
18043
f55f2d400797
Fix some format strings
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
17372
diff
changeset
|
109 tty->print_cr(" in " JLONG_FORMAT " ms (compiled %d methods)", os::javaTimeMillis() - start, _methodsCompiled); |
16136
d32be0297274
support -XX:+BootstrapGraal in conjunction with -XX:-UseGraalCompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16105
diff
changeset
|
110 } |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
111 JVMCICompileWithC1Only = c1only; |
16136
d32be0297274
support -XX:+BootstrapGraal in conjunction with -XX:-UseGraalCompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16105
diff
changeset
|
112 _bootstrapping = false; |
16006
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
113 } |
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
114 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
115 void JVMCICompiler::compile_method(methodHandle method, int entry_bci, JVMCIEnv* env) { |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
116 JVMCI_EXCEPTION_CONTEXT |
16006
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
117 |
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
118 bool is_osr = entry_bci != InvocationEntryBci; |
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
119 if (_bootstrapping && is_osr) { |
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
120 // no OSR compilations during bootstrap - the compiler is just too slow at this point, |
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
121 // and we know that there are no endless loops |
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
122 return; |
3651
a31028282e3e
Support blocking compilation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
3650
diff
changeset
|
123 } |
6948
e522a00b91aa
Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/ after NPG - C++ build works
Doug Simon <doug.simon@oracle.com>
parents:
6699
diff
changeset
|
124 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
125 JVMCIRuntime::ensure_jvmci_class_loader_is_initialized(); |
16105
e54507c88a93
placed HandleMark around Graal compilation performed on a native compiler thread
Doug Simon <doug.simon@oracle.com>
parents:
16014
diff
changeset
|
126 HandleMark hm; |
3650
0e8a2a629afb
Pass-by compilation broker.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
3649
diff
changeset
|
127 ResourceMark rm; |
16006
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
128 JavaValue result(T_VOID); |
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
129 JavaCallArguments args; |
21616
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
130 Handle receiver = JVMCIRuntime::get_HotSpotJVMCIRuntime(); |
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
131 args.push_oop(receiver); |
16006
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
132 args.push_long((jlong) (address) method()); |
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
133 args.push_int(entry_bci); |
19321
98592ae4b1fa
only record method dependencies if JVMTI hotswapping or breakpointing is enabled
Doug Simon <doug.simon@oracle.com>
parents:
18614
diff
changeset
|
134 args.push_long((jlong) (address) env); |
98592ae4b1fa
only record method dependencies if JVMTI hotswapping or breakpointing is enabled
Doug Simon <doug.simon@oracle.com>
parents:
18614
diff
changeset
|
135 args.push_int(env->task()->compile_id()); |
21616
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
136 JavaCalls::call_special(&result, receiver->klass(), vmSymbols::compileMetaspaceMethod_name(), vmSymbols::compileMetaspaceMethod_signature(), &args, CHECK_ABORT); |
16136
d32be0297274
support -XX:+BootstrapGraal in conjunction with -XX:-UseGraalCompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16105
diff
changeset
|
137 |
16399
4481cf549cfc
removed (Java based) CompilationQueue
Doug Simon <doug.simon@oracle.com>
parents:
16146
diff
changeset
|
138 _methodsCompiled++; |
3650
0e8a2a629afb
Pass-by compilation broker.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
3649
diff
changeset
|
139 } |
0e8a2a629afb
Pass-by compilation broker.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
3649
diff
changeset
|
140 |
15582
063ec2920d21
made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents:
15495
diff
changeset
|
141 |
1406
35069ca331f2
Hooked C1XCompiler class into the system.
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
diff
changeset
|
142 // Compilation entry point for methods |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
143 void JVMCICompiler::compile_method(ciEnv* env, ciMethod* target, int entry_bci) { |
3651
a31028282e3e
Support blocking compilation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
3650
diff
changeset
|
144 ShouldNotReachHere(); |
1406
35069ca331f2
Hooked C1XCompiler class into the system.
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
diff
changeset
|
145 } |
35069ca331f2
Hooked C1XCompiler class into the system.
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
diff
changeset
|
146 |
35069ca331f2
Hooked C1XCompiler class into the system.
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
diff
changeset
|
147 // Print compilation timers and statistics |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
148 void JVMCICompiler::print_timers() { |
18171
9bb816169777
Report code install timer in hosted mode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18144
diff
changeset
|
149 print_compilation_timers(); |
9bb816169777
Report code install timer in hosted mode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18144
diff
changeset
|
150 } |
9bb816169777
Report code install timer in hosted mode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18144
diff
changeset
|
151 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
152 #endif // COMPILERJVMCI |
18171
9bb816169777
Report code install timer in hosted mode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18144
diff
changeset
|
153 |
9bb816169777
Report code install timer in hosted mode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18144
diff
changeset
|
154 // Print compilation timers and statistics |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
155 void JVMCICompiler::print_compilation_timers() { |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
156 TRACE_jvmci_1("JVMCICompiler::print_timers"); |
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
157 tty->print_cr(" JVMCI code install time: %6.3f s", _codeInstallTimer.seconds()); |
1410
b30a2cd5e3a2
Added methods to c1x_VMExits.cpp
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
1407
diff
changeset
|
158 } |
b30a2cd5e3a2
Added methods to c1x_VMExits.cpp
Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
parents:
1407
diff
changeset
|
159 |
21559
be896a1983c0
recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21551
diff
changeset
|
160 void JVMCICompiler::compile_the_world() { |
18119
6997fce99fa3
graal/hotspot: fix memleak
Bernhard Urban <bernhard.urban@jku.at>
parents:
18118
diff
changeset
|
161 HandleMark hm; |
16006
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
162 JavaThread* THREAD = JavaThread::current(); |
21616
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
163 Handle receiver = JVMCIRuntime::get_HotSpotJVMCIRuntime(); |
16428
78ddecd6255f
added CHECK macros in uses of SymbolTable::new_symbol; added CHECK_ABORT macros for TRAPS functions that must abort the VM if they throw an exception
Doug Simon <doug.simon@oracle.com>
parents:
16399
diff
changeset
|
164 TempNewSymbol compileTheWorld = SymbolTable::new_symbol("compileTheWorld", CHECK_ABORT); |
16006
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
165 JavaValue result(T_VOID); |
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
166 JavaCallArguments args; |
21616
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
167 args.push_oop(receiver); |
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21559
diff
changeset
|
168 JavaCalls::call_special(&result, receiver->klass(), compileTheWorld, vmSymbols::void_method_signature(), &args, CHECK_ABORT); |
16006
66a9286203a2
decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents:
15603
diff
changeset
|
169 } |