annotate src/share/vm/graal/graalRuntime.hpp @ 21519:cecb4e39521c

Use files in lib/graal/options to define Graal options (-G:...) instead of generating code for them
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Wed, 27 May 2015 17:40:26 +0200
parents fe4a77bec5b7
children b7ac67354c14
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 /*
87e4aed94b26 Remove HotSpotCompiler interface, let HotSpotCompilerImpl implement GraalRuntime (in preparation of renaming).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff changeset
2 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
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
5747
120820e30baa added basic high-level interpreter support to HotSpot
Christian Haeubl <haeubl@ssw.jku.at>
parents: 5526
diff changeset
24 #ifndef SHARE_VM_GRAAL_GRAAL_RUNTIME_HPP
120820e30baa added basic high-level interpreter support to HotSpot
Christian Haeubl <haeubl@ssw.jku.at>
parents: 5526
diff changeset
25 #define SHARE_VM_GRAAL_GRAAL_RUNTIME_HPP
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"
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
29 #include "runtime/deoptimization.hpp"
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
30 #include "graal/graalOptions.hpp"
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
31
21515
1ab7802d35c9 Factor GraalRuntime::parse_lines out of GraalRuntime::get_service_impls
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19920
diff changeset
32 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
33 int _lineNo;
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
34 char* _filename;
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
35 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
36 protected:
21516
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
37 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
38 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
39 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
40 abort();
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
41 }
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
42 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
43 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
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 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
46 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
47 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
48 _lineNo++;
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
49 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
50 }
21515
1ab7802d35c9 Factor GraalRuntime::parse_lines out of GraalRuntime::get_service_impls
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19920
diff changeset
51 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
52 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
53 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
54 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
55 };
1ab7802d35c9 Factor GraalRuntime::parse_lines out of GraalRuntime::get_service_impls
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 19920
diff changeset
56
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
57 class GraalOptionParseClosure;
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
58
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
59 class GraalRuntime: public CHeapObj<mtCompiler> {
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
60 friend GraalOptionParseClosure;
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
61 private:
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
62
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
63 static jobject _HotSpotGraalRuntime_instance;
16683
4d0d1dc5db00 introduce extra field to record when HotSpotGraalRuntime has been initialized to avoid spurious errors during VM shutdown for short lived applications
Doug Simon <doug.simon@oracle.com>
parents: 16628
diff changeset
64 static bool _HotSpotGraalRuntime_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
65
18303
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
66 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
67
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
68 /**
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
69 * Loads default option value overrides from a <jre_home>/lib/graal.options if it exists. Each
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
70 * line in this file must have the format of a Graal command line option without the
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
71 * leading "-G:" prefix. These option values are set prior to processing of any Graal
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
72 * options present on the command line.
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
73 */
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
74 static void parse_graal_options_file(OptionsValueTable* options);
16870
11b22ccafccd Correctly parse string option values that start with + or -.
Roland Schatz <roland.schatz@oracle.com>
parents: 16683
diff changeset
75
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
76 static bool parse_argument(OptionsValueTable* options, const char* arg);
16270
d56a09df1a1f implemented eager checking of Graal options (GRAAL-807)
Doug Simon <doug.simon@oracle.com>
parents: 16006
diff changeset
77
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
78 static void print_flags_helper(TRAPS);
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
79 /**
15941
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
80 * 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
81 *
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15870
diff changeset
82 * @param name the name of a class implementing com.oracle.graal.api.runtime.Service
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15870
diff changeset
83 */
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15870
diff changeset
84 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
85
7125
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
86 public:
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
87
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
88 /**
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
89 * Parses the Graal specific VM options that were presented by the launcher and sets
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
90 * the relevants Java fields.
21516
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
91 */
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
92 static OptionsValueTable* parse_arguments();
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
93
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
94 static void set_options(OptionsValueTable* options, TRAPS);
21516
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
95
fe4a77bec5b7 Use GraalRuntime::parse_lines in GraalRuntime::parse_graal_options_file
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents: 21515
diff changeset
96 /**
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
97 * Ensures that the Graal class loader is initialized and the well known Graal classes are loaded.
c307546c7b0a made initialization of the Graal class loader and well known Graal classes lazy
Doug Simon <doug.simon@oracle.com>
parents: 18303
diff changeset
98 */
c307546c7b0a made initialization of the Graal class loader and well known Graal classes lazy
Doug Simon <doug.simon@oracle.com>
parents: 18303
diff changeset
99 static void ensure_graal_class_loader_is_initialized();
c307546c7b0a made initialization of the Graal class loader and well known Graal classes lazy
Doug Simon <doug.simon@oracle.com>
parents: 18303
diff changeset
100
15603
b7fb36e57da8 made Graal initialization be driven from Java to simplify sequencing and synchronization
Doug Simon <doug.simon@oracle.com>
parents: 15589
diff changeset
101 static void initialize_natives(JNIEnv *env, jclass c2vmClass);
15916
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15870
diff changeset
102
16683
4d0d1dc5db00 introduce extra field to record when HotSpotGraalRuntime has been initialized to avoid spurious errors during VM shutdown for short lived applications
Doug Simon <doug.simon@oracle.com>
parents: 16628
diff changeset
103 static bool is_HotSpotGraalRuntime_initialized() { return _HotSpotGraalRuntime_initialized; }
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
104
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
105 /**
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
106 * Gets the singleton HotSpotGraalRuntime instance, initializing it if necessary
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
107 */
19920
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
108 static Handle get_HotSpotGraalRuntime() {
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
109 initialize_Graal();
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
110 return Handle(JNIHandles::resolve_non_null(_HotSpotGraalRuntime_instance));
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
111 }
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
112
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
113 static jobject get_HotSpotGraalRuntime_jobject() {
19920
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
114 initialize_Graal();
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
115 assert(_HotSpotGraalRuntime_initialized, "must be");
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
116 return _HotSpotGraalRuntime_instance;
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
117 }
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
118
19920
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
119 static Handle callInitializer(const char* className, const char* methodName, const char* returnType);
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
120
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
121 /**
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
122 * Trigger initialization of HotSpotGraalRuntime through Graal.runtime()
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
123 */
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
124 static void initialize_Graal();
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
125
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
126 /**
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
127 * Explicitly initialize HotSpotGraalRuntime itself
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
128 */
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
129 static void initialize_HotSpotGraalRuntime();
7366593c0610 Make the native initialization path for Graal more robust
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 19009
diff changeset
130
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
131 static void shutdown();
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
132
18303
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
133 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
134 return _shutdown_called;
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
135 }
ab47ef2f2207 disable blocking compilation requests once GraalRuntime::shutdown has been called
Doug Simon <doug.simon@oracle.com>
parents: 18227
diff changeset
136
15941
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
137 /**
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
138 * Given an interface representing a Graal service (i.e. sub-interface of
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
139 * com.oracle.graal.api.runtime.Service), gets an array of objects, one per
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
140 * 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
141 *
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
142 * The definition of this method is in graalRuntime.inline.hpp
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
143 * which is generated by com.oracle.graal.hotspot.sourcegen.GenGraalRuntimeInlineHpp.
b35b1dc75ec0 added comments to explain the origin of generated sources
Doug Simon <doug.simon@oracle.com>
parents: 15916
diff changeset
144 */
15916
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15870
diff changeset
145 static Handle get_service_impls(KlassHandle serviceKlass, TRAPS);
6aa352b260f4 removed use of ServiceLoader in runtime initialization
Doug Simon <doug.simon@oracle.com>
parents: 15870
diff changeset
146
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
147 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
148
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
149 /**
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
150 * 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
151 */
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
152 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
153
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
154 /**
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 * 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
156 */
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 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
158
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
159 #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
160 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
161 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
162 jio_snprintf(buf, 256, "Uncaught exception at %s:%d", __FILE__, __LINE__); \
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 GraalRuntime::abort_on_pending_exception(PENDING_EXCEPTION, buf); \
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 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
165 } \
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 (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
167
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 #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
169 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
170 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
171 jio_snprintf(buf, 256, "Uncaught exception at %s:%d", __FILE__, __LINE__); \
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 GraalRuntime::abort_on_pending_exception(PENDING_EXCEPTION, buf); \
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 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
174 } \
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
175 (void)(0
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
176
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
177 /**
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 * Same as SystemDictionary::resolve_or_null but uses the Graal loader.
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 */
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 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
181
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
182 /**
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 * Same as SystemDictionary::resolve_or_fail but uses the Graal loader.
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 */
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 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
186
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
187 /**
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 * Loads a given Graal class and aborts the VM if it fails.
ad431bf0de07 added support to load classes from graal.jar with a separate class loader
Doug Simon <doug.simon@oracle.com>
parents: 16273
diff changeset
189 */
16006
66a9286203a2 decoupled Graal runtime initialization and Graal compilation queue initialization
Doug Simon <doug.simon@oracle.com>
parents: 15941
diff changeset
190 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
191
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
192 static BufferBlob* initialize_buffer_blob();
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
193
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
194 static BasicType kindToBasicType(jchar ch);
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
195
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
196 // The following routines are all called from compiled Graal code
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
197
9352
d4684b468e93 made NewInstanceStub a RuntimeStub that directly calls the C runtime (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9338
diff changeset
198 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
199 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
200 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
201 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
202 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
203 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
204 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
205 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
206 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
207 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
208 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
209 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
210 static void create_out_of_bounds_exception(JavaThread* thread, jint index);
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
211 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
212 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
213 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
214 static void log_primitive(JavaThread* thread, jchar typeChar, jlong value, jboolean newline);
9593
a3b4bcc22313 replaced log_* assembler stubs with compiled stubs (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9592
diff changeset
215 // Note: Must be kept in sync with constants in com.oracle.graal.replacements.Log
a3b4bcc22313 replaced log_* assembler stubs with compiled stubs (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9592
diff changeset
216 enum {
a3b4bcc22313 replaced log_* assembler stubs with compiled stubs (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9592
diff changeset
217 LOG_OBJECT_NEWLINE = 0x01,
a3b4bcc22313 replaced log_* assembler stubs with compiled stubs (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9592
diff changeset
218 LOG_OBJECT_STRING = 0x02,
a3b4bcc22313 replaced log_* assembler stubs with compiled stubs (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9592
diff changeset
219 LOG_OBJECT_ADDRESS = 0x04
a3b4bcc22313 replaced log_* assembler stubs with compiled stubs (GRAAL-81)
Doug Simon <doug.simon@oracle.com>
parents: 9592
diff changeset
220 };
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
221 static void log_object(JavaThread* thread, oopDesc* msg, jint flags);
10434
8b22524df53b Add G1 Barriers' foreign calls
Christos Kotselidis <christos.kotselidis@oracle.com>
parents: 10072
diff changeset
222 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
223 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
224 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
225 static void new_store_pre_barrier(JavaThread* thread);
18227
bcb1e5c232d8 Test deoptimization inside ForeignCallNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 17033
diff changeset
226
bcb1e5c232d8 Test deoptimization inside ForeignCallNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 17033
diff changeset
227 // Test only function
bcb1e5c232d8 Test deoptimization inside ForeignCallNode
Tom Rodriguez <tom.rodriguez@oracle.com>
parents: 17033
diff changeset
228 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
229 };
1baf7f1e3f23 decoupled C++ Graal runtime from C1
Doug Simon <doug.simon@oracle.com>
parents: 6559
diff changeset
230
15582
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
231 // Tracing macros
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
232
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
233 #define IF_TRACE_graal_1 if (!(TraceGraal >= 1)) ; else
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
234 #define IF_TRACE_graal_2 if (!(TraceGraal >= 2)) ; else
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
235 #define IF_TRACE_graal_3 if (!(TraceGraal >= 3)) ; else
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
236 #define IF_TRACE_graal_4 if (!(TraceGraal >= 4)) ; else
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
237 #define IF_TRACE_graal_5 if (!(TraceGraal >= 5)) ; else
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
238
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
239 // using commas and else to keep one-instruction semantics
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
240
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
241 #define TRACE_graal_1 if (!(TraceGraal >= 1 && (tty->print("TraceGraal-1: "), true))) ; else tty->print_cr
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
242 #define TRACE_graal_2 if (!(TraceGraal >= 2 && (tty->print(" TraceGraal-2: "), true))) ; else tty->print_cr
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
243 #define TRACE_graal_3 if (!(TraceGraal >= 3 && (tty->print(" TraceGraal-3: "), true))) ; else tty->print_cr
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
244 #define TRACE_graal_4 if (!(TraceGraal >= 4 && (tty->print(" TraceGraal-4: "), true))) ; else tty->print_cr
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
245 #define TRACE_graal_5 if (!(TraceGraal >= 5 && (tty->print(" TraceGraal-5: "), true))) ; else tty->print_cr
063ec2920d21 made Graal runtime initialization in hosted mode lazy
Doug Simon <doug.simon@oracle.com>
parents: 14731
diff changeset
246
5747
120820e30baa added basic high-level interpreter support to HotSpot
Christian Haeubl <haeubl@ssw.jku.at>
parents: 5526
diff changeset
247 #endif // SHARE_VM_GRAAL_GRAAL_RUNTIME_HPP