/* * Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions.
*/
class BoolObjectClosure; class constantPoolHandle; class JavaThread; class JVMCIEnv; class JVMCIRuntime; class Metadata; class MetadataHandleBlock; class OopClosure; class OopStorage;
class JVMCI : public AllStatic { friendclass JVMCIRuntime; friendclass JVMCIEnv;
private: // List of libjvmci based JVMCIRuntimes. // Should only be accessed under JVMCI_lock. static JVMCIRuntime* _compiler_runtimes;
// Special libjvmci based JVMCIRuntime reserved for // threads trying to attach when in JVMCI shutdown. // This preserves the invariant that JVMCIRuntime::for_thread() // never returns nullptr. static JVMCIRuntime* _shutdown_compiler_runtime;
// True when at least one JVMCIRuntime::initialize_HotSpotJVMCIRuntime() // execution has completed successfully. staticvolatilebool _is_initialized;
// True once boxing cache classes are guaranteed to be initialized. staticbool _box_caches_initialized;
// Handle created when loading the JVMCI shared library with os::dll_load. // Must hold JVMCI_lock when initializing. staticvoid* _shared_library_handle;
// Argument to os::dll_load when loading JVMCI shared library staticchar* _shared_library_path;
// Records whether JVMCI::shutdown has been called. staticvolatilebool _in_shutdown;
// Access to the HotSpot heap based JVMCIRuntime static JVMCIRuntime* _java_runtime;
// The file descriptor to which fatal_log() writes. Initialized on // first call to fatal_log(). staticvolatileint _fatal_log_fd;
// The path of the file underlying _fatal_log_fd if it is a normal file. staticconstchar* _fatal_log_filename;
// Native thread id of thread that will initialize _fatal_log_fd. staticvolatile intx _fatal_log_init_thread;
// Returns true iff there is a new shared library JavaVM per compilation. staticbool one_shared_library_javavm_per_compilation() { return JVMCIThreadsPerNativeLibraryRuntime == 1 && JVMCICompilerIdleDelay == 0;
}
// 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`. staticvoid* get_shared_library(char*& path, bool load);
// Logs the fatal crash data in `buf` to the appropriate stream. staticvoid fatal_log(constchar* buf, size_t count);
// Gets the name of the opened JVMCI shared library crash data file or NULL // if this file has not been created. staticconstchar* fatal_log_filename() { return _fatal_log_filename; }
staticvoid do_unloading(bool unloading_occurred);
staticvoid metadata_do(void f(Metadata*));
staticvoid shutdown(JavaThread* thread);
// Returns whether JVMCI::shutdown has been called. staticbool in_shutdown();
staticbool is_compiler_initialized();
/** * Determines if the VM is sufficiently booted to initialize JVMCI.
*/ staticbool can_initialize_JVMCI();
staticvoid initialize_globals();
staticvoid initialize_compiler(TRAPS);
// Ensures the boxing cache classes (e.g., java.lang.Integer.IntegerCache) are initialized. staticvoid ensure_box_caches_initialized(TRAPS);
// Increments a value indicating some JVMCI compilation activity // happened on `thread` if it is a CompilerThread. // Returns `thread`. static JavaThread* compilation_tick(JavaThread* thread);
// 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; }
// Gets the JVMCI shared library runtime associated with `thread`. // This must only be called when UseJVMCINativeLibrary is true. // If `create` is true and there is no runtime currently associated with // `thread`, this method creates one. static JVMCIRuntime* compiler_runtime(JavaThread* thread, bool create=true);
// Appends an event to the JVMCI event log if JVMCIEventLogLevel >= `level` staticvoid vlog(int level, constchar* format, va_list ap) ATTRIBUTE_PRINTF(2, 0);
// Traces an event to tty if JVMCITraceLevel >= `level` staticvoid vtrace(int level, constchar* format, va_list ap) ATTRIBUTE_PRINTF(2, 0);
public: // Log/trace a JVMCI event staticvoid event(int level, constchar* format, ...) ATTRIBUTE_PRINTF(2, 3); staticvoid event1(constchar* format, ...) ATTRIBUTE_PRINTF(1, 2); staticvoid event2(constchar* format, ...) ATTRIBUTE_PRINTF(1, 2); staticvoid event3(constchar* format, ...) ATTRIBUTE_PRINTF(1, 2); staticvoid event4(constchar* format, ...) ATTRIBUTE_PRINTF(1, 2);
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.