< prev index next >
src/hotspot/share/jvmci/jvmci.hpp
Print this page
@@ -43,24 +43,28 @@
class JVMCI : public AllStatic {
friend class JVMCIRuntime;
friend class JVMCIEnv;
private:
- // Handles to objects in the HotSpot heap.
- static OopStorage* _object_handles;
+ // Access to the HotSpotJVMCIRuntime used by the CompileBroker.
+ static JVMCIRuntime* _compiler_runtime;
- static OopStorage* object_handles();
+ // True when at least one JVMCIRuntime::initialize_HotSpotJVMCIRuntime()
+ // execution has completed successfully.
+ static volatile bool _is_initialized;
- // Handles to Metadata objects.
- static MetadataHandleBlock* _metadata_handles;
+ // Handle created when loading the JVMCI shared library with os::dll_load.
+ // Must hold JVMCI_lock when initializing.
+ static void* _shared_library_handle;
- // Access to the HotSpotJVMCIRuntime used by the CompileBroker.
- static JVMCIRuntime* _compiler_runtime;
+ // Argument to os::dll_load when loading JVMCI shared library
+ static char* _shared_library_path;
+
+ // Records whether JVMCI::shutdown has been called.
+ static volatile bool _in_shutdown;
- // Access to the HotSpotJVMCIRuntime used by Java code running on the
- // HotSpot heap. It will be the same as _compiler_runtime if
- // UseJVMCINativeLibrary is false
+ // Access to the HotSpot heap based JVMCIRuntime
static JVMCIRuntime* _java_runtime;
public:
enum CodeInstallResult {
ok,
@@ -68,19 +72,26 @@
dependencies_invalid,
cache_full,
code_too_large
};
+ // Gets the handle to the loaded JVMCI shared library, loading it
+ // first if not yet loaded and `load` is true. The path from
+ // which the library is loaded is returned in `path`. If
+ // `load` is true then JVMCI_lock must be locked.
+ static void* get_shared_library(char*& path, bool load);
+
static void do_unloading(bool unloading_occurred);
static void metadata_do(void f(Metadata*));
static void oops_do(OopClosure* f);
static void shutdown();
- static bool shutdown_called();
+ // Returns whether JVMCI::shutdown has been called.
+ static bool in_shutdown();
static bool is_compiler_initialized();
/**
* Determines if the VM is sufficiently booted to initialize JVMCI.
@@ -89,19 +100,12 @@
static void initialize_globals();
static void initialize_compiler(TRAPS);
- static jobject make_global(const Handle& obj);
- static void destroy_global(jobject handle);
- static bool is_global_handle(jobject handle);
-
- static jmetadata allocate_handle(const methodHandle& handle);
- static jmetadata allocate_handle(const constantPoolHandle& handle);
-
- static void release_handle(jmetadata handle);
-
static JVMCIRuntime* compiler_runtime() { return _compiler_runtime; }
+ // Gets the single runtime for JVMCI on the Java heap. This is the only
+ // JVMCI runtime available when !UseJVMCINativeLibrary.
static JVMCIRuntime* java_runtime() { return _java_runtime; }
};
#endif // SHARE_JVMCI_JVMCI_HPP
< prev index next >