annotate src/share/vm/jvmci/jvmciRuntime.hpp @ 23322:f8178417d018

Expose SharedRuntime::throw_and_post_jvmti_exception to JVMCI compilers.
author Roland Schatz <roland.schatz@oracle.com>
date Mon, 14 Mar 2016 11:58:48 +0100
parents c1935b089c01
children 3b978b521c83
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 {
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
71 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
72 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
73 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
74
22575
569c82ebb96e Replace JVMCICompileWithC1Only with package based controls
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22574
diff changeset
75 static int _trivial_prefixes_count;
569c82ebb96e Replace JVMCICompileWithC1Only with package based controls
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22574
diff changeset
76 static char** _trivial_prefixes;
569c82ebb96e Replace JVMCICompileWithC1Only with package based controls
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22574
diff changeset
77
18303
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
78 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
79
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
80 /**
15941
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
81 * 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
82 *
22761
f2206f5bb62e removed @ServiceProvider mechanism (GRAAL-1380)
Doug Simon <doug.simon@oracle.com>
parents: 22758
diff changeset
83 * @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
84 */
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15870
diff changeset
85 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
86
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
87 public:
22429
a1b0a76567c7 Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents: 22398
diff changeset
88 /**
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
89 * 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
90 */
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
91 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
92
23319
c1935b089c01 8151470: [JVMCI] remove up-call to HotSpotJVMCICompilerConfig.selectCompiler
Roland Schatz <roland.schatz@oracle.com>
parents: 22761
diff changeset
93 static bool is_HotSpotJVMCIRuntime_initialized() {
c1935b089c01 8151470: [JVMCI] remove up-call to HotSpotJVMCICompilerConfig.selectCompiler
Roland Schatz <roland.schatz@oracle.com>
parents: 22761
diff changeset
94 return _HotSpotJVMCIRuntime_initialized;
c1935b089c01 8151470: [JVMCI] remove up-call to HotSpotJVMCICompilerConfig.selectCompiler
Roland Schatz <roland.schatz@oracle.com>
parents: 22761
diff changeset
95 }
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
96
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
97 /**
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
98 * 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
99 */
22574
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
100 static Handle get_HotSpotJVMCIRuntime(TRAPS) {
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
101 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
102 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
103 }
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
104
22574
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
105 static jobject get_HotSpotJVMCIRuntime_jobject(TRAPS) {
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
106 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
107 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
108 return _HotSpotJVMCIRuntime_instance;
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
109 }
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
110
22574
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
111 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
112
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
113 /**
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
114 * 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
115 */
22574
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
116 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
117
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
118 /**
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
119 * 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
120 */
22574
5a706439be63 Propagate exceptions up instead of aborting
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22544
diff changeset
121 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
122
22454
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22429
diff changeset
123 static void metadata_do(void f(Metadata*));
76af33d4d504 Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22429
diff changeset
124
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
125 static void shutdown();
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
126
18303
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
127 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
128 return _shutdown_called;
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
129 }
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
130
22575
569c82ebb96e Replace JVMCICompileWithC1Only with package based controls
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22574
diff changeset
131 static bool treat_as_trivial(Method* method);
569c82ebb96e Replace JVMCICompileWithC1Only with package based controls
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22574
diff changeset
132
15941
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
133 /**
22761
f2206f5bb62e removed @ServiceProvider mechanism (GRAAL-1380)
Doug Simon <doug.simon@oracle.com>
parents: 22758
diff changeset
134 * 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
135 * 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
136 */
21563
4f63449b4422 revived post option parsing handler notification
Doug Simon <doug.simon@oracle.com>
parents: 21562
diff changeset
137 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
138
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
139 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
140
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
141 /**
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
142 * 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
143 * 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
144 * 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
145 */
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
146 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
147
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
148 /**
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
149 * 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
150 */
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
151 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
152
16273
d6ffc6164830 handle any exception raised during Graal option checking/parsing, not just those with a non-null message
Doug Simon <doug.simon@oracle.com>
parents: 16270
diff changeset
153 /**
d6ffc6164830 handle any exception raised during Graal option checking/parsing, not just those with a non-null message
Doug Simon <doug.simon@oracle.com>
parents: 16270
diff changeset
154 * Calls Throwable.printStackTrace() on a given exception.
d6ffc6164830 handle any exception raised during Graal option checking/parsing, not just those with a non-null message
Doug Simon <doug.simon@oracle.com>
parents: 16270
diff changeset
155 */
d6ffc6164830 handle any exception raised during Graal option checking/parsing, not just those with a non-null message
Doug Simon <doug.simon@oracle.com>
parents: 16270
diff changeset
156 static void call_printStackTrace(Handle exception, Thread* thread);
d6ffc6164830 handle any exception raised during Graal option checking/parsing, not just those with a non-null message
Doug Simon <doug.simon@oracle.com>
parents: 16270
diff changeset
157
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
158 #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
159 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
160 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
161 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
162 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
163 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
164 } \
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
165 (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
166
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
167 #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
168 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
169 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
170 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
171 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
172 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
173 } \
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
174 (void)(0
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
175
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
176 /**
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
177 * 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
178 */
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
179 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
180
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
181 /**
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
182 * 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
183 */
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
184 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
185
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
186 /**
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
187 * 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
188 */
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
189 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
190
22722
0229a2ca608b Make kindToBasicType trapping.
Roland Schatz <roland.schatz@oracle.com>
parents: 22685
diff changeset
191 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
192
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
193 // 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
194
9352
d4684b468e93 made NewInstanceStub a RuntimeStub that directly calls the C runtime (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9338
diff changeset
195 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
196 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
197 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
198 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
199 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
200 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
201 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
202 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
203 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
204 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
205 static void monitorexit (JavaThread* thread, oopDesc* obj, BasicLock* lock);
9591
0381c7937e7a replaced create_null_pointer_exception assembler stub with compiled stub (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9590
diff changeset
206 static void create_null_exception(JavaThread* thread);
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
207 static void create_out_of_bounds_exception(JavaThread* thread, jint index);
23322
f8178417d018 Expose SharedRuntime::throw_and_post_jvmti_exception to JVMCI compilers.
Roland Schatz <roland.schatz@oracle.com>
parents: 23319
diff changeset
208 static void throw_and_post_jvmti_exception(JavaThread* thread, Symbol* name, const char* message);
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
209 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
210 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
211 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
212 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
213 // 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
214 // 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
215 // 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
216 // followed by its address.
da5bdbf4a008 Simplify log_object interface
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 22650
diff changeset
217 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
218 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
219 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
220 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
221 static void new_store_pre_barrier(JavaThread* thread);
18227
bcb1e5c232d8 Test deoptimization inside ForeignCallNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 17033
diff changeset
222
bcb1e5c232d8 Test deoptimization inside ForeignCallNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 17033
diff changeset
223 // Test only function
bcb1e5c232d8 Test deoptimization inside ForeignCallNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 17033
diff changeset
224 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
225 };
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
226
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
227 // Tracing macros.
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
228
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
229 #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
230 #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
231 #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
232 #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
233 #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
234
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
235 #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
236 #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
237 #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
238 #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
239 #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
240
21559
be896a1983c0 recast all Graal native code as JVMCI code (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents: 21527
diff changeset
241 #endif // SHARE_VM_JVMCI_JVMCI_RUNTIME_HPP