annotate src/share/vm/jvmci/jvmciRuntime.hpp @ 23379:24505bf61633

allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
author Doug Simon <doug.simon@oracle.com>
date Mon, 09 May 2016 16:08:16 +0200
parents 041534002323
children 0226d6bcb0d2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5526
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
1 /*
23319
c1935b089c01 8151470: [JVMCI] remove up-call to HotSpotJVMCICompilerConfig.selectCompiler
Roland Schatz <roland.schatz@oracle.com>
parents: 22761
diff changeset
2 * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
5526
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
4 *
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
7 * published by the Free Software Foundation.
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
8 *
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
13 * accompanied this code).
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
14 *
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
18 *
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
21 * questions.
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
22 */
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
23
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
24 #ifndef SHARE_VM_JVMCI_JVMCI_RUNTIME_HPP
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
25 #define SHARE_VM_JVMCI_JVMCI_RUNTIME_HPP
5747
120820e30baa added basic high-level interpreter support to HotSpot
Christian Haeubl <haeubl@ssw.jku.at>
parents: 5526
diff changeset
26
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
27 #include "interpreter/interpreter.hpp"
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
28 #include "memory/allocation.hpp"
21956
35affb9c707a add properties from <jdk>/jre/lib/jvmci/*.properties files to system properties
Doug Simon <doug.simon@oracle.com>
parents: 21875
diff changeset
29 #include "runtime/arguments.hpp"
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
30 #include "runtime/deoptimization.hpp"
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
31
22733
732763293625 must use JVMCI class loader when trying to throw a JVMCIError from native VM code
Doug Simon <doug.simon@oracle.com>
parents: 22722
diff changeset
32
732763293625 must use JVMCI class loader when trying to throw a JVMCIError from native VM code
Doug Simon <doug.simon@oracle.com>
parents: 22722
diff changeset
33
22722
0229a2ca608b Make kindToBasicType trapping.
Roland Schatz <roland.schatz@oracle.com>
parents: 22685
diff changeset
34 #define JVMCI_ERROR(...) \
22733
732763293625 must use JVMCI class loader when trying to throw a JVMCIError from native VM code
Doug Simon <doug.simon@oracle.com>
parents: 22722
diff changeset
35 { JVMCIRuntime::fthrow_error(THREAD_AND_LOCATION, __VA_ARGS__); return; }
22722
0229a2ca608b Make kindToBasicType trapping.
Roland Schatz <roland.schatz@oracle.com>
parents: 22685
diff changeset
36
0229a2ca608b Make kindToBasicType trapping.
Roland Schatz <roland.schatz@oracle.com>
parents: 22685
diff changeset
37 #define JVMCI_ERROR_(ret, ...) \
22733
732763293625 must use JVMCI class loader when trying to throw a JVMCIError from native VM code
Doug Simon <doug.simon@oracle.com>
parents: 22722
diff changeset
38 { JVMCIRuntime::fthrow_error(THREAD_AND_LOCATION, __VA_ARGS__); return ret; }
22722
0229a2ca608b Make kindToBasicType trapping.
Roland Schatz <roland.schatz@oracle.com>
parents: 22685
diff changeset
39
0229a2ca608b Make kindToBasicType trapping.
Roland Schatz <roland.schatz@oracle.com>
parents: 22685
diff changeset
40 #define JVMCI_ERROR_0(...) JVMCI_ERROR_(0, __VA_ARGS__)
0229a2ca608b Make kindToBasicType trapping.
Roland Schatz <roland.schatz@oracle.com>
parents: 22685
diff changeset
41 #define JVMCI_ERROR_NULL(...) JVMCI_ERROR_(NULL, __VA_ARGS__)
0229a2ca608b Make kindToBasicType trapping.
Roland Schatz <roland.schatz@oracle.com>
parents: 22685
diff changeset
42 #define JVMCI_ERROR_OK(...) JVMCI_ERROR_(JVMCIEnv::ok, __VA_ARGS__)
0229a2ca608b Make kindToBasicType trapping.
Roland Schatz <roland.schatz@oracle.com>
parents: 22685
diff changeset
43 #define CHECK_OK CHECK_(JVMCIEnv::ok)
0229a2ca608b Make kindToBasicType trapping.
Roland Schatz <roland.schatz@oracle.com>
parents: 22685
diff changeset
44
21515
1ab7802d35c9 Factor GraalRuntime::parse_lines out of GraalRuntime::get_service_impls
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19920
diff changeset
45 class ParseClosure : public StackObj {
21516
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
46 int _lineNo;
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
47 char* _filename;
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
48 bool _abort;
21519
cecb4e39521c Use files in lib/graal/options to define Graal options (-G:...) instead of generating code for them
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21516
diff changeset
49 protected:
21516
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
50 void abort() { _abort = true; }
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
51 void warn_and_abort(const char* message) {
21519
cecb4e39521c Use files in lib/graal/options to define Graal options (-G:...) instead of generating code for them
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21516
diff changeset
52 warn(message);
21516
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
53 abort();
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
54 }
21519
cecb4e39521c Use files in lib/graal/options to define Graal options (-G:...) instead of generating code for them
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21516
diff changeset
55 void warn(const char* message) {
cecb4e39521c Use files in lib/graal/options to define Graal options (-G:...) instead of generating code for them
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21516
diff changeset
56 warning("Error at line %d while parsing %s: %s", _lineNo, _filename == NULL ? "?" : _filename, message);
cecb4e39521c Use files in lib/graal/options to define Graal options (-G:...) instead of generating code for them
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21516
diff changeset
57 }
21515
1ab7802d35c9 Factor GraalRuntime::parse_lines out of GraalRuntime::get_service_impls
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19920
diff changeset
58 public:
21519
cecb4e39521c Use files in lib/graal/options to define Graal options (-G:...) instead of generating code for them
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21516
diff changeset
59 ParseClosure() : _lineNo(0), _filename(NULL), _abort(false) {}
21516
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
60 void parse_line(char* line) {
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
61 _lineNo++;
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
62 do_line(line);
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
63 }
21515
1ab7802d35c9 Factor GraalRuntime::parse_lines out of GraalRuntime::get_service_impls
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19920
diff changeset
64 virtual void do_line(char* line) = 0;
21516
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
65 int lineNo() { return _lineNo; }
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
66 bool is_aborted() { return _abort; }
21519
cecb4e39521c Use files in lib/graal/options to define Graal options (-G:...) instead of generating code for them
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21516
diff changeset
67 void set_filename(char* path) {_filename = path; _lineNo = 0;}
21515
1ab7802d35c9 Factor GraalRuntime::parse_lines out of GraalRuntime::get_service_impls
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19920
diff changeset
68 };
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
69
22454
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22429
diff changeset
70 class JVMCIRuntime: public AllStatic {
23379
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
71 public:
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
72 // Constants describing whether JVMCI wants to be able to adjust the compilation
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
73 // level selected for a method by the VM compilation policy and if so, based on
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
74 // what information about the method being schedule for compilation.
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
75 enum CompLevelAdjustment {
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
76 none = 0, // no adjustment
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
77 by_holder = 1, // adjust based on declaring class of method
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
78 by_full_signature = 2 // adjust based on declaring class, name and signature of method
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
79 };
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
80
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
81 private:
21527
07b088d61d5d added HotSpotJVMCIRuntime* classes, replaced references to HotSpotGraalRuntime in VM with HotSpotJVMCIRuntime (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21473
diff changeset
82 static jobject _HotSpotJVMCIRuntime_instance;
07b088d61d5d added HotSpotJVMCIRuntime* classes, replaced references to HotSpotGraalRuntime in VM with HotSpotJVMCIRuntime (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21473
diff changeset
83 static bool _HotSpotJVMCIRuntime_initialized;
15870
fe608a56e3f7 made HotSpotOptions processing faster by removing use of service loader in VM startup and only doing work for options specified on the command line
Doug Simon <doug.simon@oracle.com>
parents: 15603
diff changeset
84
22575
569c82ebb96e Replace JVMCICompileWithC1Only with package based controls
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22574
diff changeset
85 static int _trivial_prefixes_count;
569c82ebb96e Replace JVMCICompileWithC1Only with package based controls
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22574
diff changeset
86 static char** _trivial_prefixes;
569c82ebb96e Replace JVMCICompileWithC1Only with package based controls
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22574
diff changeset
87
23379
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
88 static CompLevelAdjustment _comp_level_adjustment;
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
89
18303
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
90 static bool _shutdown_called;
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
91
15870
fe608a56e3f7 made HotSpotOptions processing faster by removing use of service loader in VM startup and only doing work for options specified on the command line
Doug Simon <doug.simon@oracle.com>
parents: 15603
diff changeset
92 /**
15941
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
93 * Instantiates a service object, calls its default constructor and returns it.
15916
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15870
diff changeset
94 *
22761
f2206f5bb62e removed @ServiceProvider mechanism (GRAAL-1380)
Doug Simon <doug.simon@oracle.com>
parents: 22758
diff changeset
95 * @param name the name of a service provider class
15916
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15870
diff changeset
96 */
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15870
diff changeset
97 static Handle create_Service(const char* name, TRAPS);
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15870
diff changeset
98
23379
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
99 static CompLevel adjust_comp_level_inner(methodHandle method, bool is_osr, CompLevel level, JavaThread* thread);
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
100
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
101 public:
22429
a1b0a76567c7 Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents: 22398
diff changeset
102 /**
23327
19c85f6618ed re-add support for parsing jre/jvmci/*.properties files
Doug Simon <doug.simon@oracle.com>
parents: 23323
diff changeset
103 * Parses *.properties files in jre/lib/jvmci/ and adds the properties to plist.
19c85f6618ed re-add support for parsing jre/jvmci/*.properties files
Doug Simon <doug.simon@oracle.com>
parents: 23323
diff changeset
104 */
19c85f6618ed re-add support for parsing jre/jvmci/*.properties files
Doug Simon <doug.simon@oracle.com>
parents: 23323
diff changeset
105 static void init_system_properties(SystemProperty** plist);
19c85f6618ed re-add support for parsing jre/jvmci/*.properties files
Doug Simon <doug.simon@oracle.com>
parents: 23323
diff changeset
106
19c85f6618ed re-add support for parsing jre/jvmci/*.properties files
Doug Simon <doug.simon@oracle.com>
parents: 23323
diff changeset
107 /**
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
108 * Ensures that the JVMCI class loader is initialized and the well known JVMCI classes are loaded.
18614
c307546c7b0a made initialization of the Graal class loader and well known Graal classes lazy
Doug Simon <doug.simon@oracle.com>
parents: 18303
diff changeset
109 */
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
110 static void ensure_jvmci_class_loader_is_initialized();
18614
c307546c7b0a made initialization of the Graal class loader and well known Graal classes lazy
Doug Simon <doug.simon@oracle.com>
parents: 18303
diff changeset
111
23319
c1935b089c01 8151470: [JVMCI] remove up-call to HotSpotJVMCICompilerConfig.selectCompiler
Roland Schatz <roland.schatz@oracle.com>
parents: 22761
diff changeset
112 static bool is_HotSpotJVMCIRuntime_initialized() {
c1935b089c01 8151470: [JVMCI] remove up-call to HotSpotJVMCICompilerConfig.selectCompiler
Roland Schatz <roland.schatz@oracle.com>
parents: 22761
diff changeset
113 return _HotSpotJVMCIRuntime_initialized;
c1935b089c01 8151470: [JVMCI] remove up-call to HotSpotJVMCICompilerConfig.selectCompiler
Roland Schatz <roland.schatz@oracle.com>
parents: 22761
diff changeset
114 }
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
115
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
116 /**
21527
07b088d61d5d added HotSpotJVMCIRuntime* classes, replaced references to HotSpotGraalRuntime in VM with HotSpotJVMCIRuntime (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21473
diff changeset
117 * Gets the singleton HotSpotJVMCIRuntime instance, initializing it if necessary
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
118 */
22574
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
119 static Handle get_HotSpotJVMCIRuntime(TRAPS) {
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
120 initialize_JVMCI(CHECK_(Handle()));
21527
07b088d61d5d added HotSpotJVMCIRuntime* classes, replaced references to HotSpotGraalRuntime in VM with HotSpotJVMCIRuntime (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21473
diff changeset
121 return Handle(JNIHandles::resolve_non_null(_HotSpotJVMCIRuntime_instance));
19920
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
122 }
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
123
22574
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
124 static jobject get_HotSpotJVMCIRuntime_jobject(TRAPS) {
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
125 initialize_JVMCI(CHECK_NULL);
21527
07b088d61d5d added HotSpotJVMCIRuntime* classes, replaced references to HotSpotGraalRuntime in VM with HotSpotJVMCIRuntime (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21473
diff changeset
126 assert(_HotSpotJVMCIRuntime_initialized, "must be");
07b088d61d5d added HotSpotJVMCIRuntime* classes, replaced references to HotSpotGraalRuntime in VM with HotSpotJVMCIRuntime (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21473
diff changeset
127 return _HotSpotJVMCIRuntime_instance;
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
128 }
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
129
22574
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
130 static Handle callStatic(const char* className, const char* methodName, const char* returnType, JavaCallArguments* args, TRAPS);
19920
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
131
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
132 /**
21527
07b088d61d5d added HotSpotJVMCIRuntime* classes, replaced references to HotSpotGraalRuntime in VM with HotSpotJVMCIRuntime (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21473
diff changeset
133 * Trigger initialization of HotSpotJVMCIRuntime through JVMCI.getRuntime()
19920
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
134 */
22574
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
135 static void initialize_JVMCI(TRAPS);
19920
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
136
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
137 /**
21527
07b088d61d5d added HotSpotJVMCIRuntime* classes, replaced references to HotSpotGraalRuntime in VM with HotSpotJVMCIRuntime (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21473
diff changeset
138 * Explicitly initialize HotSpotJVMCIRuntime itself
19920
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
139 */
22574
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
140 static void initialize_HotSpotJVMCIRuntime(TRAPS);
19920
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
141
22454
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22429
diff changeset
142 static void metadata_do(void f(Metadata*));
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22429
diff changeset
143
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
144 static void shutdown();
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
145
18303
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
146 static bool shutdown_called() {
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
147 return _shutdown_called;
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
148 }
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
149
22575
569c82ebb96e Replace JVMCICompileWithC1Only with package based controls
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22574
diff changeset
150 static bool treat_as_trivial(Method* method);
569c82ebb96e Replace JVMCICompileWithC1Only with package based controls
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22574
diff changeset
151
15941
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
152 /**
23379
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
153 * Lets JVMCI modify the compilation level currently selected for a method by
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
154 * the VM compilation policy.
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
155 *
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
156 * @param method the method being scheduled for compilation
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
157 * @param is_osr specifies if the compilation is an OSR compilation
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
158 * @param level the compilation level currently selected by the VM compilation policy
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
159 * @param thread the current thread
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
160 * @return the compilation level to use for the compilation
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
161 */
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
162 static CompLevel adjust_comp_level(methodHandle method, bool is_osr, CompLevel level, JavaThread* thread);
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
163
24505bf61633 allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents: 23367
diff changeset
164 /**
22761
f2206f5bb62e removed @ServiceProvider mechanism (GRAAL-1380)
Doug Simon <doug.simon@oracle.com>
parents: 22758
diff changeset
165 * Given an interface representing a JVMCI service, gets an array of objects, one per
15941
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
166 * known implementation of the service.
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
167 */
21563
4f63449b4422 revived post option parsing handler notification
Doug Simon <doug.simon@oracle.com>
parents: 21562
diff changeset
168 static objArrayHandle get_service_impls(KlassHandle serviceKlass, TRAPS);
15916
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15870
diff changeset
169
21519
cecb4e39521c Use files in lib/graal/options to define Graal options (-G:...) instead of generating code for them
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21516
diff changeset
170 static void parse_lines(char* path, ParseClosure* closure, bool warnStatFailure);
21515
1ab7802d35c9 Factor GraalRuntime::parse_lines out of GraalRuntime::get_service_impls
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19920
diff changeset
171
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
172 /**
22733
732763293625 must use JVMCI class loader when trying to throw a JVMCIError from native VM code
Doug Simon <doug.simon@oracle.com>
parents: 22722
diff changeset
173 * Throws a JVMCIError with a formatted error message. Ideally we would use
732763293625 must use JVMCI class loader when trying to throw a JVMCIError from native VM code
Doug Simon <doug.simon@oracle.com>
parents: 22722
diff changeset
174 * a variation of Exceptions::fthrow that takes a class loader argument but alas,
732763293625 must use JVMCI class loader when trying to throw a JVMCIError from native VM code
Doug Simon <doug.simon@oracle.com>
parents: 22722
diff changeset
175 * no such variation exists.
732763293625 must use JVMCI class loader when trying to throw a JVMCIError from native VM code
Doug Simon <doug.simon@oracle.com>
parents: 22722
diff changeset
176 */
732763293625 must use JVMCI class loader when trying to throw a JVMCIError from native VM code
Doug Simon <doug.simon@oracle.com>
parents: 22722
diff changeset
177 static void fthrow_error(Thread* thread, const char* file, int line, const char* format, ...) ATTRIBUTE_PRINTF(4, 5);
732763293625 must use JVMCI class loader when trying to throw a JVMCIError from native VM code
Doug Simon <doug.simon@oracle.com>
parents: 22722
diff changeset
178
732763293625 must use JVMCI class loader when trying to throw a JVMCIError from native VM code
Doug Simon <doug.simon@oracle.com>
parents: 22722
diff changeset
179 /**
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
180 * Aborts the VM due to an unexpected exception.
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
181 */
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
182 static void abort_on_pending_exception(Handle exception, const char* message, bool dump_core = false);
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
183
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: 16395
diff changeset
184 #define CHECK_ABORT THREAD); \
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: 16395
diff changeset
185 if (HAS_PENDING_EXCEPTION) { \
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: 16395
diff changeset
186 char buf[256]; \
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: 16395
diff changeset
187 jio_snprintf(buf, 256, "Uncaught exception at %s:%d", __FILE__, __LINE__); \
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
188 JVMCIRuntime::abort_on_pending_exception(PENDING_EXCEPTION, buf); \
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: 16395
diff changeset
189 return; \
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: 16395
diff changeset
190 } \
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: 16395
diff changeset
191 (void)(0
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: 16395
diff changeset
192
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: 16395
diff changeset
193 #define CHECK_ABORT_(result) THREAD); \
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: 16395
diff changeset
194 if (HAS_PENDING_EXCEPTION) { \
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: 16395
diff changeset
195 char buf[256]; \
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: 16395
diff changeset
196 jio_snprintf(buf, 256, "Uncaught exception at %s:%d", __FILE__, __LINE__); \
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
197 JVMCIRuntime::abort_on_pending_exception(PENDING_EXCEPTION, buf); \
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: 16395
diff changeset
198 return result; \
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: 16395
diff changeset
199 } \
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: 16395
diff changeset
200 (void)(0
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
201
16395
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
202 /**
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
203 * Same as SystemDictionary::resolve_or_null but uses the JVMCI loader.
16395
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
204 */
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
205 static Klass* resolve_or_null(Symbol* name, TRAPS);
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
206
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
207 /**
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
208 * Same as SystemDictionary::resolve_or_fail but uses the JVMCI loader.
16395
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
209 */
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
210 static Klass* resolve_or_fail(Symbol* name, TRAPS);
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
211
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
212 /**
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
213 * Loads a given JVMCI class and aborts the VM if it fails.
16395
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
214 */
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
215 static Klass* load_required_class(Symbol* name);
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
216
22722
0229a2ca608b Make kindToBasicType trapping.
Roland Schatz <roland.schatz@oracle.com>
parents: 22685
diff changeset
217 static BasicType kindToBasicType(jchar ch, TRAPS);
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
218
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
219 // The following routines are all called from compiled JVMCI code
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
220
9352
d4684b468e93 made NewInstanceStub a RuntimeStub that directly calls the C runtime (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9338
diff changeset
221 static void new_instance(JavaThread* thread, Klass* klass);
9338
0266549ff6e0 added support from compiled stubs to be installed as RuntimeStubs and to be able to directly call C/C++ runtime functions (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9232
diff changeset
222 static void new_array(JavaThread* thread, Klass* klass, jint length);
9355
4e260c2ced0e removed new_multi_array assembler stub (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9354
diff changeset
223 static void new_multi_array(JavaThread* thread, Klass* klass, int rank, jint* dims);
12423
370b5f07f9e2 The runtime entries need to use oopDesc* rather than oop in their signature
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10953
diff changeset
224 static void dynamic_new_array(JavaThread* thread, oopDesc* element_mirror, jint length);
13578
d8143c431d63 Add DynamicNewInstanceNode and use it to intrinsify Unsafe.allocateInstance
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 12435
diff changeset
225 static void dynamic_new_instance(JavaThread* thread, oopDesc* type_mirror);
12423
370b5f07f9e2 The runtime entries need to use oopDesc* rather than oop in their signature
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10953
diff changeset
226 static jboolean thread_is_interrupted(JavaThread* thread, oopDesc* obj, jboolean clear_interrupted);
9471
5fa54bf57f8c replaced exception_handler_nofpu assembler stub with a compiled stub (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9463
diff changeset
227 static void vm_message(jboolean vmError, jlong format, jlong v1, jlong v2, jlong v3);
12423
370b5f07f9e2 The runtime entries need to use oopDesc* rather than oop in their signature
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10953
diff changeset
228 static jint identity_hash_code(JavaThread* thread, oopDesc* obj);
9471
5fa54bf57f8c replaced exception_handler_nofpu assembler stub with a compiled stub (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9463
diff changeset
229 static address exception_handler_for_pc(JavaThread* thread);
9590
5f9c41cd3b1e replaced monitorenter/monitorexit assembler stubs with compiled stubs (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9581
diff changeset
230 static void monitorenter(JavaThread* thread, oopDesc* obj, BasicLock* lock);
5f9c41cd3b1e replaced monitorenter/monitorexit assembler stubs with compiled stubs (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9581
diff changeset
231 static void monitorexit (JavaThread* thread, oopDesc* obj, BasicLock* lock);
14731
0cb5c4d276d4 use raw data support to fix incorrect use of String.intern() for embedding strings in code
Doug Simon <doug.simon@oracle.com>
parents: 13578
diff changeset
232 static void vm_error(JavaThread* thread, jlong where, jlong format, jlong value);
12423
370b5f07f9e2 The runtime entries need to use oopDesc* rather than oop in their signature
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10953
diff changeset
233 static oopDesc* load_and_clear_exception(JavaThread* thread);
370b5f07f9e2 The runtime entries need to use oopDesc* rather than oop in their signature
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 10953
diff changeset
234 static void log_printf(JavaThread* thread, oopDesc* format, jlong v1, jlong v2, jlong v3);
9592
efb8c1918ea5 replaced create_out_of_bounds_exception assembler stub with compiled stub (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9591
diff changeset
235 static void log_primitive(JavaThread* thread, jchar typeChar, jlong value, jboolean newline);
22668
da5bdbf4a008 Simplify log_object interface
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22650
diff changeset
236 // Print the passed in object, optionally followed by a newline. If
da5bdbf4a008 Simplify log_object interface
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22650
diff changeset
237 // as_string is true and the object is a java.lang.String then it
da5bdbf4a008 Simplify log_object interface
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22650
diff changeset
238 // printed as a string, otherwise the type of the object is printed
da5bdbf4a008 Simplify log_object interface
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22650
diff changeset
239 // followed by its address.
da5bdbf4a008 Simplify log_object interface
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22650
diff changeset
240 static void log_object(JavaThread* thread, oopDesc* object, bool as_string, bool newline);
10434
8b22524df53b Add G1 Barriers' foreign calls
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 10072
diff changeset
241 static void write_barrier_pre(JavaThread* thread, oopDesc* obj);
8b22524df53b Add G1 Barriers' foreign calls
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 10072
diff changeset
242 static void write_barrier_post(JavaThread* thread, void* card);
10953
97e282186b5b Add heap sanity checker with premature hard crash for debugging write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 10770
diff changeset
243 static jboolean validate_object(JavaThread* thread, oopDesc* parent, oopDesc* child);
12433
808348377021 Fix inconsistent oops in slow path allocation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 10953
diff changeset
244 static void new_store_pre_barrier(JavaThread* thread);
18227
bcb1e5c232d8 Test deoptimization inside ForeignCallNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 17033
diff changeset
245
23334
e0a15983ab51 Create exception throwing routines for exceptions with complex messages.
Roland Schatz <roland.schatz@oracle.com>
parents: 23329
diff changeset
246 // used to throw exceptions from compiled JVMCI code
23367
041534002323 Use strings instead of Symbol* for exception names (JDK-8155735).
Roland Schatz <roland.schatz@oracle.com>
parents: 23337
diff changeset
247 static void throw_and_post_jvmti_exception(JavaThread* thread, const char* exception, const char* message);
23334
e0a15983ab51 Create exception throwing routines for exceptions with complex messages.
Roland Schatz <roland.schatz@oracle.com>
parents: 23329
diff changeset
248 // helper methods to throw exception with complex messages
23367
041534002323 Use strings instead of Symbol* for exception names (JDK-8155735).
Roland Schatz <roland.schatz@oracle.com>
parents: 23337
diff changeset
249 static void throw_klass_external_name_exception(JavaThread* thread, const char* exception, Klass* klass);
041534002323 Use strings instead of Symbol* for exception names (JDK-8155735).
Roland Schatz <roland.schatz@oracle.com>
parents: 23337
diff changeset
250 static void throw_class_cast_exception(JavaThread* thread, const char* exception, Klass* caster_klass, Klass* target_klass);
23334
e0a15983ab51 Create exception throwing routines for exceptions with complex messages.
Roland Schatz <roland.schatz@oracle.com>
parents: 23329
diff changeset
251
18227
bcb1e5c232d8 Test deoptimization inside ForeignCallNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 17033
diff changeset
252 // Test only function
bcb1e5c232d8 Test deoptimization inside ForeignCallNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 17033
diff changeset
253 static int test_deoptimize_call_int(JavaThread* thread, int value);
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
254 };
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
255
22544
b87d1bf3cd9a renamed TraceJVMCI option to JVMCITraceLevel and ensured all tracing controlled by this option uses the TRACE_jvmci_* macros
Doug Simon <doug.simon@oracle.com>
parents: 22538
diff changeset
256 // Tracing macros.
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
257
22544
b87d1bf3cd9a renamed TraceJVMCI option to JVMCITraceLevel and ensured all tracing controlled by this option uses the TRACE_jvmci_* macros
Doug Simon <doug.simon@oracle.com>
parents: 22538
diff changeset
258 #define IF_TRACE_jvmci_1 if (!(JVMCITraceLevel >= 1)) ; else
b87d1bf3cd9a renamed TraceJVMCI option to JVMCITraceLevel and ensured all tracing controlled by this option uses the TRACE_jvmci_* macros
Doug Simon <doug.simon@oracle.com>
parents: 22538
diff changeset
259 #define IF_TRACE_jvmci_2 if (!(JVMCITraceLevel >= 2)) ; else
b87d1bf3cd9a renamed TraceJVMCI option to JVMCITraceLevel and ensured all tracing controlled by this option uses the TRACE_jvmci_* macros
Doug Simon <doug.simon@oracle.com>
parents: 22538
diff changeset
260 #define IF_TRACE_jvmci_3 if (!(JVMCITraceLevel >= 3)) ; else
b87d1bf3cd9a renamed TraceJVMCI option to JVMCITraceLevel and ensured all tracing controlled by this option uses the TRACE_jvmci_* macros
Doug Simon <doug.simon@oracle.com>
parents: 22538
diff changeset
261 #define IF_TRACE_jvmci_4 if (!(JVMCITraceLevel >= 4)) ; else
b87d1bf3cd9a renamed TraceJVMCI option to JVMCITraceLevel and ensured all tracing controlled by this option uses the TRACE_jvmci_* macros
Doug Simon <doug.simon@oracle.com>
parents: 22538
diff changeset
262 #define IF_TRACE_jvmci_5 if (!(JVMCITraceLevel >= 5)) ; else
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
263
22544
b87d1bf3cd9a renamed TraceJVMCI option to JVMCITraceLevel and ensured all tracing controlled by this option uses the TRACE_jvmci_* macros
Doug Simon <doug.simon@oracle.com>
parents: 22538
diff changeset
264 #define TRACE_jvmci_1 if (!(JVMCITraceLevel >= 1 && (tty->print("JVMCITrace-1: "), true))) ; else tty->print_cr
b87d1bf3cd9a renamed TraceJVMCI option to JVMCITraceLevel and ensured all tracing controlled by this option uses the TRACE_jvmci_* macros
Doug Simon <doug.simon@oracle.com>
parents: 22538
diff changeset
265 #define TRACE_jvmci_2 if (!(JVMCITraceLevel >= 2 && (tty->print(" JVMCITrace-2: "), true))) ; else tty->print_cr
b87d1bf3cd9a renamed TraceJVMCI option to JVMCITraceLevel and ensured all tracing controlled by this option uses the TRACE_jvmci_* macros
Doug Simon <doug.simon@oracle.com>
parents: 22538
diff changeset
266 #define TRACE_jvmci_3 if (!(JVMCITraceLevel >= 3 && (tty->print(" JVMCITrace-3: "), true))) ; else tty->print_cr
b87d1bf3cd9a renamed TraceJVMCI option to JVMCITraceLevel and ensured all tracing controlled by this option uses the TRACE_jvmci_* macros
Doug Simon <doug.simon@oracle.com>
parents: 22538
diff changeset
267 #define TRACE_jvmci_4 if (!(JVMCITraceLevel >= 4 && (tty->print(" JVMCITrace-4: "), true))) ; else tty->print_cr
b87d1bf3cd9a renamed TraceJVMCI option to JVMCITraceLevel and ensured all tracing controlled by this option uses the TRACE_jvmci_* macros
Doug Simon <doug.simon@oracle.com>
parents: 22538
diff changeset
268 #define TRACE_jvmci_5 if (!(JVMCITraceLevel >= 5 && (tty->print(" JVMCITrace-5: "), true))) ; else tty->print_cr
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
269
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
270 #endif // SHARE_VM_JVMCI_JVMCI_RUNTIME_HPP