Mercurial > hg > graal-jvmci-8
changeset 23775:d66c74920c43
move MethodProfileWidth to jvmci_globals.hpp (JDK-8163864)
EnableJVMCI should only be required when its not implied by other flags (JDK-8161265)
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 04 Oct 2016 21:58:49 +0200 |
parents | 038908669316 |
children | 450e0bafd83d |
files | src/cpu/sparc/vm/c1_globals_sparc.hpp src/cpu/sparc/vm/c2_globals_sparc.hpp src/cpu/sparc/vm/jvmci_globals_sparc.hpp src/cpu/x86/vm/c1_globals_x86.hpp src/cpu/x86/vm/c2_globals_x86.hpp src/share/vm/jvmci/jvmci_globals.cpp src/share/vm/jvmci/jvmci_globals.hpp src/share/vm/runtime/globals.hpp |
diffstat | 8 files changed, 60 insertions(+), 39 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/sparc/vm/c1_globals_sparc.hpp Mon Oct 03 17:54:28 2016 +0000 +++ b/src/cpu/sparc/vm/c1_globals_sparc.hpp Tue Oct 04 21:58:49 2016 +0200 @@ -57,7 +57,6 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G); define_pd_global(intx, InitialCodeCacheSize, 160*K); define_pd_global(intx, TypeProfileWidth, 0); -define_pd_global(intx, MethodProfileWidth, 0); #endif // !TIERED define_pd_global(bool, UseTypeProfile, false);
--- a/src/cpu/sparc/vm/c2_globals_sparc.hpp Mon Oct 03 17:54:28 2016 +0000 +++ b/src/cpu/sparc/vm/c2_globals_sparc.hpp Tue Oct 04 21:58:49 2016 +0200 @@ -38,7 +38,6 @@ define_pd_global(bool, ProfileTraps, true); define_pd_global(bool, UseOnStackReplacement, true); define_pd_global(intx, TypeProfileWidth, 2 ); -define_pd_global(intx, MethodProfileWidth, 0 ); #ifdef CC_INTERP define_pd_global(bool, ProfileInterpreter, false); #else
--- a/src/cpu/sparc/vm/jvmci_globals_sparc.hpp Mon Oct 03 17:54:28 2016 +0000 +++ b/src/cpu/sparc/vm/jvmci_globals_sparc.hpp Tue Oct 04 21:58:49 2016 +0200 @@ -57,7 +57,6 @@ define_pd_global(uintx,CodeCacheMinBlockLength, 4); define_pd_global(uintx, CodeCacheMinimumUseSpace, 400*K); define_pd_global(intx, TypeProfileWidth, 8); -define_pd_global(intx, MethodProfileWidth, 0); #endif define_pd_global(intx, MaxVectorSize, 8);
--- a/src/cpu/x86/vm/c1_globals_x86.hpp Mon Oct 03 17:54:28 2016 +0000 +++ b/src/cpu/x86/vm/c1_globals_x86.hpp Tue Oct 04 21:58:49 2016 +0200 @@ -57,7 +57,6 @@ define_pd_global(uint64_t,MaxRAM, 1ULL*G); define_pd_global(bool, CICompileOSR, true ); define_pd_global(intx, TypeProfileWidth, 0); -define_pd_global(intx, MethodProfileWidth, 0); #endif // !TIERED define_pd_global(bool, UseTypeProfile, false); define_pd_global(bool, RoundFPResults, true );
--- a/src/cpu/x86/vm/c2_globals_x86.hpp Mon Oct 03 17:54:28 2016 +0000 +++ b/src/cpu/x86/vm/c2_globals_x86.hpp Tue Oct 04 21:58:49 2016 +0200 @@ -39,7 +39,6 @@ define_pd_global(bool, ProfileTraps, true); define_pd_global(bool, UseOnStackReplacement, true); define_pd_global(intx, TypeProfileWidth, 2 ); -define_pd_global(intx, MethodProfileWidth, 0 ); #ifdef CC_INTERP define_pd_global(bool, ProfileInterpreter, false); #else
--- a/src/share/vm/jvmci/jvmci_globals.cpp Mon Oct 03 17:54:28 2016 +0000 +++ b/src/share/vm/jvmci/jvmci_globals.cpp Tue Oct 04 21:58:49 2016 +0200 @@ -30,47 +30,73 @@ JVMCI_FLAGS(MATERIALIZE_DEVELOPER_FLAG, MATERIALIZE_PD_DEVELOPER_FLAG, MATERIALIZE_PRODUCT_FLAG, MATERIALIZE_PD_PRODUCT_FLAG, MATERIALIZE_NOTPRODUCT_FLAG) bool JVMCIGlobals::check_jvmci_flags_are_consistent() { - bool status = true; - if (!EnableJVMCI) { -#define JVMCI_CHECK3(type, name, doc) JVMCI_CHECK_FLAG(name) -#define JVMCI_CHECK4(type, name, value, doc) JVMCI_CHECK_FLAG(name) -#define JVMCI_CHECK_FLAG(FLAG) \ - if (strcmp(#FLAG, "EnableJVMCI") && !FLAG_IS_DEFAULT(FLAG)) { \ - jio_fprintf(defaultStream::error_stream(), "EnableJVMCI must be enabled to use VM option '%s'\n", #FLAG); \ - status = false; \ +#ifndef PRODUCT +#define APPLY_JVMCI_FLAGS(params3, params4) \ + JVMCI_FLAGS(params4, params3, params4, params3, params4) +#define JVMCI_DECLARE_CHECK4(type, name, value, doc) bool name##checked = false; +#define JVMCI_DECLARE_CHECK3(type, name, doc) bool name##checked = false; +#define JVMCI_FLAG_CHECKED(name) name##checked = true; + APPLY_JVMCI_FLAGS(JVMCI_DECLARE_CHECK3, JVMCI_DECLARE_CHECK4) +#else +#define JVMCI_FLAG_CHECKED(name) +#endif + + // Checks that a given flag is not set if a given guard flag is false. +#define CHECK_NOT_SET(FLAG, GUARD) \ + JVMCI_FLAG_CHECKED(FLAG) \ + if (!GUARD && !FLAG_IS_DEFAULT(FLAG)) { \ + jio_fprintf(defaultStream::error_stream(), \ + "Improperly specified VM option '%s': '%s' must be enabled\n", #FLAG, #GUARD); \ + return false; \ + } + + JVMCI_FLAG_CHECKED(UseJVMCICompiler) + JVMCI_FLAG_CHECKED(EnableJVMCI) + + CHECK_NOT_SET(BootstrapJVMCI, UseJVMCICompiler) + CHECK_NOT_SET(PrintBootstrap, UseJVMCICompiler) + CHECK_NOT_SET(JVMCIThreads, UseJVMCICompiler) + CHECK_NOT_SET(JVMCIHostThreads, UseJVMCICompiler) + + if (UseJVMCICompiler) { + if (!FLAG_IS_DEFAULT(EnableJVMCI) && !EnableJVMCI) { + jio_fprintf(defaultStream::error_stream(), + "Improperly specified VM option UseJVMCICompiler: EnableJVMCI cannot be disabled\n"); + return false; } - JVMCI_FLAGS(JVMCI_CHECK4, JVMCI_CHECK3, JVMCI_CHECK4, JVMCI_CHECK3, JVMCI_CHECK4) + FLAG_SET_DEFAULT(EnableJVMCI, true); + } + CHECK_NOT_SET(UseJVMCIClassLoader, EnableJVMCI) + CHECK_NOT_SET(CodeInstallSafepointChecks, EnableJVMCI) + CHECK_NOT_SET(JVMCITraceLevel, EnableJVMCI) + CHECK_NOT_SET(JVMCICounterSize, EnableJVMCI) + CHECK_NOT_SET(JVMCICountersExcludeCompiler, EnableJVMCI) + CHECK_NOT_SET(JVMCIUseFastLocking, EnableJVMCI) + CHECK_NOT_SET(JVMCINMethodSizeLimit, EnableJVMCI) + CHECK_NOT_SET(MethodProfileWidth, EnableJVMCI) + CHECK_NOT_SET(TraceUncollectedSpeculations, EnableJVMCI) + +#ifndef PRODUCT +#define JVMCI_CHECK4(type, name, value, doc) assert(name##checked, #name " flag not checked"); +#define JVMCI_CHECK3(type, name, doc) assert(name##checked, #name " flag not checked"); + // Ensures that all JVMCI flags are checked by this method. + APPLY_JVMCI_FLAGS(JVMCI_CHECK3, JVMCI_CHECK4) +#undef APPLY_JVMCI_FLAGS +#undef JVMCI_DECLARE_CHECK3 +#undef JVMCI_DECLARE_CHECK4 #undef JVMCI_CHECK3 #undef JVMCI_CHECK4 -#undef JVMCI_CHECK_FLAG - } else { -#ifndef TIERED - // JVMCI is only usable as a jit compiler if the VM supports tiered compilation. -#define JVMCI_CHECK_FLAG(FLAG) \ - if (!FLAG_IS_DEFAULT(FLAG)) { \ - jio_fprintf(defaultStream::error_stream(), "VM option '%s' cannot be set in non-tiered VM\n", #FLAG); \ - status = false; \ - } - JVMCI_CHECK_FLAG(UseJVMCICompiler) - JVMCI_CHECK_FLAG(BootstrapJVMCI) - JVMCI_CHECK_FLAG(PrintBootstrap) - JVMCI_CHECK_FLAG(JVMCIThreads) - JVMCI_CHECK_FLAG(JVMCIHostThreads) - JVMCI_CHECK_FLAG(JVMCICountersExcludeCompiler) -#undef JVMCI_CHECK_FLAG +#undef JVMCI_FLAG_CHECKED #endif - if (BootstrapJVMCI && !UseJVMCICompiler) { - warning("BootstrapJVMCI has no effect if UseJVMCICompiler is disabled"); - } - } +#undef CHECK_NOT_SET if (UseJVMCICompiler) { if(JVMCIThreads < 1) { // Check the minimum number of JVMCI compiler threads jio_fprintf(defaultStream::error_stream(), "JVMCIThreads of " INTX_FORMAT " is invalid; must be at least 1\n", JVMCIThreads); - status = false; + return false; } } - return status; + return true; } void JVMCIGlobals::set_jvmci_specific_flags() {
--- a/src/share/vm/jvmci/jvmci_globals.hpp Mon Oct 03 17:54:28 2016 +0000 +++ b/src/share/vm/jvmci/jvmci_globals.hpp Tue Oct 04 21:58:49 2016 +0200 @@ -94,6 +94,9 @@ product(intx, JVMCINMethodSizeLimit, (80*K)*wordSize, \ "Maximum size of a compiled method.") \ \ + product(intx, MethodProfileWidth, 0, \ + "Number of methods to record in call profile") \ + \ develop(bool, TraceUncollectedSpeculations, false, \ "Print message when a failed speculation was not collected")
--- a/src/share/vm/runtime/globals.hpp Mon Oct 03 17:54:28 2016 +0000 +++ b/src/share/vm/runtime/globals.hpp Tue Oct 04 21:58:49 2016 +0200 @@ -3128,9 +3128,6 @@ product_pd(intx, TypeProfileWidth, \ "Number of receiver types to record in call/cast profile") \ \ - product_pd(intx, MethodProfileWidth, \ - "number of methods to record in call profile") \ - \ develop(intx, BciProfileWidth, 2, \ "Number of return bci's to record in ret profile") \ \