< prev index next >
src/hotspot/share/jvmci/jvmci_globals.cpp
Print this page
@@ -24,26 +24,42 @@
#include "precompiled.hpp"
#include "jvm.h"
#include "jvmci/jvmci_globals.hpp"
#include "gc/shared/gcConfig.hpp"
+#include "memory/resourceArea.hpp"
+#include "runtime/flags/jvmFlag.inline.hpp"
#include "utilities/defaultStream.hpp"
#include "utilities/ostream.hpp"
-#include "runtime/globals_extension.hpp"
+#include "utilities/resourceHash.hpp"
fileStream* JVMCIGlobals::_jni_config_file = NULL;
+#ifndef PRODUCT
+typedef ResourceHashtable<
+ void*,
+ bool,
+ primitive_hash<void*>,
+ primitive_equals<void*>,
+ 139, // prime number
+ ResourceObj::C_HEAP // It's too early in VM bootstrap, cannot use resource allocation yet
+ > JVMCIFlagCheckingTable;
+
+static void set_checked(JVMCIFlagCheckingTable* table, void* flag) {
+ table->put(flag, true);
+}
+static bool has_checked(JVMCIFlagCheckingTable* table, void* flag) {
+ return table->get(flag) != NULL;
+}
+#endif // PRODUCT
+
// Return true if jvmci flags are consistent.
bool JVMCIGlobals::check_jvmci_flags_are_consistent() {
#ifndef PRODUCT
-#define APPLY_JVMCI_FLAGS(params3, params4) \
- JVMCI_FLAGS(params4, params3, params4, params3, params4, params3, params4, params4, IGNORE_RANGE, IGNORE_CONSTRAINT)
-#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)
+ JVMCIFlagCheckingTable table;
+#define JVMCI_FLAG_CHECKED(name) set_checked(&table, (void*)&name);
#else
#define JVMCI_FLAG_CHECKED(name)
#endif
// Checks that a given flag is not set if a given guard flag is false.
@@ -127,22 +143,18 @@
JVMCI_FLAG_CHECKED(UseMontgomeryMultiplyIntrinsic)
JVMCI_FLAG_CHECKED(UseMontgomerySquareIntrinsic)
#endif // !COMPILER2
#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_FLAG_CHECKED
+ JVMFlag* flag;
+ JVMFLAG_FOR_EACH(flag) {
+ if (flag->attr() & JVMFlag::JVMCI) {
+ assert(has_checked(&table, flag->value_addr()), "%s flag not checked", flag->name());
+ }
+ }
#endif // PRODUCT
-#undef CHECK_NOT_SET
if (JVMCILibDumpJNIConfig != NULL) {
_jni_config_file = new(ResourceObj::C_HEAP, mtJVMCI) fileStream(JVMCILibDumpJNIConfig);
if (_jni_config_file == NULL || !_jni_config_file->is_open()) {
jio_fprintf(defaultStream::error_stream(),
@@ -181,11 +193,11 @@
jvmciFlag->set_product();
}
bool value = true;
JVMFlag *jvmciEnableFlag = JVMFlag::find_flag("EnableJVMCIProduct");
- if (JVMFlag::boolAtPut(jvmciEnableFlag, &value, origin) != JVMFlag::SUCCESS) {
+ if (JVMFlag::boolAtPut(jvmciEnableFlag, value, origin) != JVMFlag::SUCCESS) {
return false;
}
// Effect of EnableJVMCIProduct on changing defaults of EnableJVMCI
// and UseJVMCICompiler is deferred to check_jvmci_flags_are_consistent
@@ -203,5 +215,44 @@
FLAG_SET_DEFAULT(EnableJVMCI, false);
FLAG_SET_DEFAULT(UseJVMCICompiler, false);
}
}
}
+
+// -- Define all JVM flags that have been declared in share/jvmci/jvmci_globals.hpp
+
+// Add JVMFlag::JVMCI to the JVMFlag::attr() for all flags defined in this file
+#ifdef FLAG_COMMON_ATTRS
+#undef FLAG_COMMON_ATTRS
+#endif
+#define FLAG_COMMON_ATTRS JVMFlag::JVMCI
+
+#include "jvmci_globals.hpp"
+#include "runtime/flags/jvmFlag.inline.hpp"
+DEFN_PRODUCT_FLAG(EnableJVMCI);
+DEFN_PRODUCT_FLAG(EnableJVMCIProduct);
+DEFN_PRODUCT_FLAG(UseJVMCICompiler);
+DEFN_PRODUCT_FLAG(JVMCIPrintProperties);
+DEFN_PRODUCT_FLAG(BootstrapJVMCI);
+DEFN_PRODUCT_FLAG(EagerJVMCI);
+DEFN_PRODUCT_FLAG(PrintBootstrap);
+DEFN_PRODUCT_FLAG(JVMCIThreads); DEFN_PRODUCT_RANGE(JVMCIThreads);
+DEFN_PRODUCT_FLAG(JVMCIHostThreads); DEFN_PRODUCT_RANGE(JVMCIHostThreads);
+NOT_COMPILER2(DEFN_PRODUCT_FLAG(MaxVectorSize);)
+
+NOT_COMPILER2(DEFN_PRODUCT_FLAG(ReduceInitialCardMarks);)
+
+DEFN_PRODUCT_FLAG(JVMCITraceLevel); DEFN_PRODUCT_RANGE(JVMCITraceLevel);
+DEFN_PRODUCT_FLAG(JVMCICounterSize); DEFN_PRODUCT_RANGE(JVMCICounterSize);
+DEFN_PRODUCT_FLAG(JVMCICountersExcludeCompiler);
+DEFN_DEVELOP_FLAG(JVMCIUseFastLocking);
+DEFN_PRODUCT_FLAG(JVMCINMethodSizeLimit); DEFN_PRODUCT_RANGE(JVMCINMethodSizeLimit);
+DEFN_PRODUCT_FLAG(JVMCILibPath);
+DEFN_PRODUCT_FLAG(JVMCILibDumpJNIConfig);
+DEFN_PRODUCT_FLAG(UseJVMCINativeLibrary);
+NOT_COMPILER2(DEFN_PRODUCT_FLAG(UseMultiplyToLenIntrinsic);)
+
+NOT_COMPILER2(DEFN_PRODUCT_FLAG(UseSquareToLenIntrinsic);)
+
+NOT_COMPILER2(DEFN_PRODUCT_FLAG(UseMulAddIntrinsic);)
+
+NOT_COMPILER2(DEFN_PRODUCT_FLAG(UseMontgomeryMultiplyIntrinsic);)
< prev index next >