8358738: AOT cache created without graal jit should not be used with graal jit
This commit is contained in:
parent
e18277b470
commit
3a8c8e5b7a
@ -44,6 +44,7 @@
|
|||||||
#include "classfile/systemDictionaryShared.hpp"
|
#include "classfile/systemDictionaryShared.hpp"
|
||||||
#include "classfile/vmClasses.hpp"
|
#include "classfile/vmClasses.hpp"
|
||||||
#include "classfile/vmSymbols.hpp"
|
#include "classfile/vmSymbols.hpp"
|
||||||
|
#include "compiler/compilerDefinitions.inline.hpp"
|
||||||
#include "jvm.h"
|
#include "jvm.h"
|
||||||
#include "logging/log.hpp"
|
#include "logging/log.hpp"
|
||||||
#include "logging/logMessage.hpp"
|
#include "logging/logMessage.hpp"
|
||||||
@ -232,6 +233,15 @@ void FileMapHeader::populate(FileMapInfo *info, size_t core_region_alignment,
|
|||||||
} else {
|
} else {
|
||||||
_narrow_klass_pointer_bits = _narrow_klass_shift = -1;
|
_narrow_klass_pointer_bits = _narrow_klass_shift = -1;
|
||||||
}
|
}
|
||||||
|
// Which JIT compier is used
|
||||||
|
_compiler_type = (u1)CompilerType::compiler_none; // Interpreter only
|
||||||
|
if (CompilerConfig::is_c2_enabled()) {
|
||||||
|
_compiler_type = (u1)CompilerType::compiler_c2;
|
||||||
|
} else if (CompilerConfig::is_jvmci_compiler_enabled()) {
|
||||||
|
_compiler_type = (u1)CompilerType::compiler_jvmci;
|
||||||
|
} else if (CompilerConfig::is_c1_enabled()) {
|
||||||
|
_compiler_type = (u1)CompilerType::compiler_c1;
|
||||||
|
}
|
||||||
_type_profile_level = TypeProfileLevel;
|
_type_profile_level = TypeProfileLevel;
|
||||||
_type_profile_args_limit = TypeProfileArgsLimit;
|
_type_profile_args_limit = TypeProfileArgsLimit;
|
||||||
_type_profile_parms_limit = TypeProfileParmsLimit;
|
_type_profile_parms_limit = TypeProfileParmsLimit;
|
||||||
@ -1935,6 +1945,31 @@ bool FileMapHeader::validate() {
|
|||||||
CompactStrings ? "enabled" : "disabled");
|
CompactStrings ? "enabled" : "disabled");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
bool jvmci_compiler_is_enabled = CompilerConfig::is_jvmci_compiler_enabled();
|
||||||
|
CompilerType compiler_type = CompilerType::compiler_none; // Interpreter only
|
||||||
|
if (CompilerConfig::is_c2_enabled()) {
|
||||||
|
compiler_type = CompilerType::compiler_c2;
|
||||||
|
} else if (jvmci_compiler_is_enabled) {
|
||||||
|
compiler_type = CompilerType::compiler_jvmci;
|
||||||
|
} else if (CompilerConfig::is_c1_enabled()) {
|
||||||
|
compiler_type = CompilerType::compiler_c1;
|
||||||
|
}
|
||||||
|
CompilerType archive_compiler_type = CompilerType(_compiler_type);
|
||||||
|
// JVMCI compiler loads additional jdk.internal.vm.ci module,
|
||||||
|
// does different type profiling settigns and generate
|
||||||
|
// different code. We can't use archive which was produced
|
||||||
|
// without it and reverse.
|
||||||
|
// Only allow mix when JIT compilation is disabled.
|
||||||
|
// Interpreter is used by default when dumping archive.
|
||||||
|
bool intepreter_is_used = (archive_compiler_type == CompilerType::compiler_none) ||
|
||||||
|
(compiler_type == CompilerType::compiler_none);
|
||||||
|
if (!intepreter_is_used &&
|
||||||
|
jvmci_compiler_is_enabled != (archive_compiler_type == CompilerType::compiler_jvmci)) {
|
||||||
|
MetaspaceShared::report_loading_error("The %s's JIT compiler setting (%s)"
|
||||||
|
" does not equal the current setting (%s).", file_type,
|
||||||
|
compilertype2name(archive_compiler_type), compilertype2name(compiler_type));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (TrainingData::have_data()) {
|
if (TrainingData::have_data()) {
|
||||||
if (_type_profile_level != TypeProfileLevel) {
|
if (_type_profile_level != TypeProfileLevel) {
|
||||||
MetaspaceShared::report_loading_error("The %s's TypeProfileLevel setting (%d)"
|
MetaspaceShared::report_loading_error("The %s's TypeProfileLevel setting (%d)"
|
||||||
|
@ -147,6 +147,7 @@ private:
|
|||||||
size_t _ro_ptrmap_start_pos; // The first bit in the ptrmap corresponds to this position in the ro region
|
size_t _ro_ptrmap_start_pos; // The first bit in the ptrmap corresponds to this position in the ro region
|
||||||
|
|
||||||
// The following are parameters that affect MethodData layout.
|
// The following are parameters that affect MethodData layout.
|
||||||
|
u1 _compiler_type;
|
||||||
uint _type_profile_level;
|
uint _type_profile_level;
|
||||||
int _type_profile_args_limit;
|
int _type_profile_args_limit;
|
||||||
int _type_profile_parms_limit;
|
int _type_profile_parms_limit;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user