Mercurial > hg > graal-jvmci-8
changeset 23760:655fd63024d0
move jvmci flag handling to JVMCIGlobals
author | David Leopoldseder <david.d.leopoldseder@oracle.com> |
---|---|
date | Fri, 23 Sep 2016 16:33:12 +0200 |
parents | 561a3f3a9b99 |
children | 1fece5f8307c |
files | src/share/vm/jvmci/jvmci_globals.cpp src/share/vm/jvmci/jvmci_globals.hpp src/share/vm/runtime/arguments.cpp src/share/vm/runtime/arguments.hpp |
diffstat | 4 files changed, 85 insertions(+), 74 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/jvmci/jvmci_globals.cpp Thu Sep 22 13:15:59 2016 -0700 +++ b/src/share/vm/jvmci/jvmci_globals.cpp Fri Sep 23 16:33:12 2016 +0200 @@ -24,5 +24,78 @@ #include "precompiled.hpp" #include "jvmci/jvmci_globals.hpp" +#include "utilities/defaultStream.hpp" +#include "runtime/globals_extension.hpp" 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; \ + } + JVMCI_FLAGS(JVMCI_CHECK4, JVMCI_CHECK3, JVMCI_CHECK4, JVMCI_CHECK3, JVMCI_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 +#endif + if (BootstrapJVMCI && !UseJVMCICompiler) { + warning("BootstrapJVMCI has no effect if UseJVMCICompiler is disabled"); + } + } + 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"); + status = false; + } + } + return status; +} + +void JVMCIGlobals::set_jvmci_specific_flags() { + if (UseJVMCICompiler) { + if (FLAG_IS_DEFAULT(TypeProfileWidth)) { + FLAG_SET_DEFAULT(TypeProfileWidth, 8); + } + if (FLAG_IS_DEFAULT(OnStackReplacePercentage)) { + FLAG_SET_DEFAULT(OnStackReplacePercentage, 933); + } + if (FLAG_IS_DEFAULT(ReservedCodeCacheSize)) { + FLAG_SET_DEFAULT(ReservedCodeCacheSize, 64*M); + } + if (FLAG_IS_DEFAULT(InitialCodeCacheSize)) { + FLAG_SET_DEFAULT(InitialCodeCacheSize, 16*M); + } + if (FLAG_IS_DEFAULT(MetaspaceSize)) { + FLAG_SET_DEFAULT(MetaspaceSize, 12*M); + } + if (FLAG_IS_DEFAULT(NewSizeThreadIncrease)) { + FLAG_SET_DEFAULT(NewSizeThreadIncrease, 4*K); + } + } + if (!ScavengeRootsInCode) { + warning("forcing ScavengeRootsInCode non-zero because JVMCI is enabled"); + ScavengeRootsInCode = 1; + } +}
--- a/src/share/vm/jvmci/jvmci_globals.hpp Thu Sep 22 13:15:59 2016 -0700 +++ b/src/share/vm/jvmci/jvmci_globals.hpp Fri Sep 23 16:33:12 2016 +0200 @@ -102,4 +102,14 @@ JVMCI_FLAGS(DECLARE_DEVELOPER_FLAG, DECLARE_PD_DEVELOPER_FLAG, DECLARE_PRODUCT_FLAG, DECLARE_PD_PRODUCT_FLAG, DECLARE_NOTPRODUCT_FLAG) + +class JVMCIGlobals { + public: + static void set_jvmci_specific_flags(); + // Return true if jvmci flags are consistent. If not consistent, + // an error message describing the inconsistency is printed before + // returning false. + static bool check_jvmci_flags_are_consistent(); +}; + #endif // SHARE_VM_JVMCI_JVMCI_GLOBALS_HPP
--- a/src/share/vm/runtime/arguments.cpp Thu Sep 22 13:15:59 2016 -0700 +++ b/src/share/vm/runtime/arguments.cpp Fri Sep 23 16:33:12 2016 +0200 @@ -1583,30 +1583,6 @@ } -#if INCLUDE_JVMCI -void Arguments::set_jvmci_specific_flags() { - if (UseJVMCICompiler) { - if (FLAG_IS_DEFAULT(TypeProfileWidth)) { - FLAG_SET_DEFAULT(TypeProfileWidth, 8); - } - if (FLAG_IS_DEFAULT(OnStackReplacePercentage)) { - FLAG_SET_DEFAULT(OnStackReplacePercentage, 933); - } - if (FLAG_IS_DEFAULT(ReservedCodeCacheSize)) { - FLAG_SET_DEFAULT(ReservedCodeCacheSize, 64*M); - } - if (FLAG_IS_DEFAULT(InitialCodeCacheSize)) { - FLAG_SET_DEFAULT(InitialCodeCacheSize, 16*M); - } - if (FLAG_IS_DEFAULT(MetaspaceSize)) { - FLAG_SET_DEFAULT(MetaspaceSize, 12*M); - } - if (FLAG_IS_DEFAULT(NewSizeThreadIncrease)) { - FLAG_SET_DEFAULT(NewSizeThreadIncrease, 4*K); - } - } -} -#endif void Arguments::set_ergonomics_flags() { select_gc(); @@ -2463,42 +2439,7 @@ #endif } #if INCLUDE_JVMCI - 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; \ - } - JVMCI_FLAGS(JVMCI_CHECK4, JVMCI_CHECK3, JVMCI_CHECK4, JVMCI_CHECK3, JVMCI_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 -#endif - if (BootstrapJVMCI && !UseJVMCICompiler) { - warning("BootstrapJVMCI has no effect if UseJVMCICompiler is disabled"); - } - if (!ScavengeRootsInCode) { - warning("forcing ScavengeRootsInCode non-zero because JVMCI is enabled"); - ScavengeRootsInCode = 1; - } - } + status = status && JVMCIGlobals::check_jvmci_flags_are_consistent(); #endif // Need to limit the extent of the padding to reasonable size. @@ -2563,14 +2504,6 @@ assert(min_number_of_compiler_threads <= CI_COMPILER_COUNT, "minimum should be less or equal default number"); // Check the minimum number of compiler threads status &=verify_min_value(CICompilerCount, min_number_of_compiler_threads, "CICompilerCount"); - -#if INCLUDE_JVMCI - if (UseJVMCICompiler) { - // Check the minimum number of JVMCI compiler threads - status &=verify_min_value(JVMCIThreads, 1, "JVMCIThreads"); - } -#endif - return status; } @@ -4123,7 +4056,7 @@ #if INCLUDE_JVMCI // Set flags specific to JVMCI. This is done prior to computing NMethodSweepFraction. - set_jvmci_specific_flags(); + JVMCIGlobals::set_jvmci_specific_flags(); #endif set_shared_spaces_flags();
--- a/src/share/vm/runtime/arguments.hpp Thu Sep 22 13:15:59 2016 -0700 +++ b/src/share/vm/runtime/arguments.hpp Fri Sep 23 16:33:12 2016 +0200 @@ -457,11 +457,6 @@ static inline bool gc_selected(); // whether a gc has been selected static void select_gc_ergonomically(); - -#if INCLUDE_JVMCI - static void set_jvmci_specific_flags(); -#endif - // Verifies that the given value will fit as a MinHeapFreeRatio. If not, an error // message is returned in the provided buffer. static bool verify_MinHeapFreeRatio(FormatBuffer<80>& err_msg, uintx min_heap_free_ratio);