Skip to content

Commit 04ef527

Browse files
committed
8224878: Use JVMFlag parameters instead of name strings
Reviewed-by: gziemski, dholmes, jrose
1 parent e1aca70 commit 04ef527

15 files changed

+355
-464
lines changed

src/hotspot/share/jvmci/jvmciCompilerToVM.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ C2V_VMENTRY_NULL(jobject, getFlagValue, (JNIEnv* env, jobject c2vm, jobject name
205205
JVMCI_THROW_NULL(NullPointerException);
206206
}
207207
const char* cstring = JVMCIENV->as_utf8_string(name);
208-
JVMFlag* flag = JVMFlag::find_flag(cstring, strlen(cstring), /* allow_locked */ true, /* return_flag */ true);
208+
const JVMFlag* flag = JVMFlag::find_declared_flag(cstring);
209209
if (flag == NULL) {
210210
return c2vm;
211211
}

src/hotspot/share/jvmci/jvmciCompilerToVMInit.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ jobjectArray readConfiguration0(JNIEnv *env, JVMCI_TRAPS) {
369369
#define COUNT_FLAG(ignore) +1
370370
#ifdef ASSERT
371371
#define CHECK_FLAG(type, name) { \
372-
JVMFlag* flag = JVMFlag::find_flag(#name, strlen(#name), /*allow_locked*/ true, /* return_flag */ true); \
372+
const JVMFlag* flag = JVMFlag::find_declared_flag(#name); \
373373
assert(flag != NULL, "No such flag named " #name); \
374374
assert(flag->is_##type(), "JVMFlag " #name " is not of type " #type); \
375375
}

src/hotspot/share/prims/whitebox.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,27 +1137,29 @@ WB_ENTRY(void, WB_ClearMethodState(JNIEnv* env, jobject o, jobject method))
11371137
WB_END
11381138

11391139
template <typename T>
1140-
static bool GetVMFlag(JavaThread* thread, JNIEnv* env, jstring name, T* value, JVMFlag::Error (*TAt)(const char*, T*, bool, bool)) {
1140+
static bool GetVMFlag(JavaThread* thread, JNIEnv* env, jstring name, T* value, JVMFlag::Error (*TAt)(const JVMFlag*, T*)) {
11411141
if (name == NULL) {
11421142
return false;
11431143
}
11441144
ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
11451145
const char* flag_name = env->GetStringUTFChars(name, NULL);
11461146
CHECK_JNI_EXCEPTION_(env, false);
1147-
JVMFlag::Error result = (*TAt)(flag_name, value, true, true);
1147+
const JVMFlag* flag = JVMFlag::find_declared_flag(flag_name);
1148+
JVMFlag::Error result = (*TAt)(flag, value);
11481149
env->ReleaseStringUTFChars(name, flag_name);
11491150
return (result == JVMFlag::SUCCESS);
11501151
}
11511152

11521153
template <typename T>
1153-
static bool SetVMFlag(JavaThread* thread, JNIEnv* env, jstring name, T* value, JVMFlag::Error (*TAtPut)(const char*, T*, JVMFlag::Flags)) {
1154+
static bool SetVMFlag(JavaThread* thread, JNIEnv* env, jstring name, T* value, JVMFlag::Error (*TAtPut)(JVMFlag* flag, T*, JVMFlag::Flags)) {
11541155
if (name == NULL) {
11551156
return false;
11561157
}
11571158
ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
11581159
const char* flag_name = env->GetStringUTFChars(name, NULL);
11591160
CHECK_JNI_EXCEPTION_(env, false);
1160-
JVMFlag::Error result = (*TAtPut)(flag_name, value, JVMFlag::INTERNAL);
1161+
JVMFlag* flag = JVMFlag::find_flag(flag_name);
1162+
JVMFlag::Error result = (*TAtPut)(flag, value, JVMFlag::INTERNAL);
11611163
env->ReleaseStringUTFChars(name, flag_name);
11621164
return (result == JVMFlag::SUCCESS);
11631165
}
@@ -1192,22 +1194,22 @@ static jobject doubleBox(JavaThread* thread, JNIEnv* env, jdouble value) {
11921194
return box(thread, env, vmSymbols::java_lang_Double(), vmSymbols::Double_valueOf_signature(), value);
11931195
}
11941196

1195-
static JVMFlag* getVMFlag(JavaThread* thread, JNIEnv* env, jstring name) {
1197+
static const JVMFlag* getVMFlag(JavaThread* thread, JNIEnv* env, jstring name) {
11961198
ThreadToNativeFromVM ttnfv(thread); // can't be in VM when we call JNI
11971199
const char* flag_name = env->GetStringUTFChars(name, NULL);
11981200
CHECK_JNI_EXCEPTION_(env, NULL);
1199-
JVMFlag* result = JVMFlag::find_flag(flag_name, strlen(flag_name), true, true);
1201+
const JVMFlag* result = JVMFlag::find_declared_flag(flag_name);
12001202
env->ReleaseStringUTFChars(name, flag_name);
12011203
return result;
12021204
}
12031205

12041206
WB_ENTRY(jboolean, WB_IsConstantVMFlag(JNIEnv* env, jobject o, jstring name))
1205-
JVMFlag* flag = getVMFlag(thread, env, name);
1207+
const JVMFlag* flag = getVMFlag(thread, env, name);
12061208
return (flag != NULL) && flag->is_constant_in_binary();
12071209
WB_END
12081210

12091211
WB_ENTRY(jboolean, WB_IsLockedVMFlag(JNIEnv* env, jobject o, jstring name))
1210-
JVMFlag* flag = getVMFlag(thread, env, name);
1212+
const JVMFlag* flag = getVMFlag(thread, env, name);
12111213
return (flag != NULL) && !(flag->is_unlocked() || flag->is_unlocker());
12121214
WB_END
12131215

src/hotspot/share/runtime/arguments.cpp

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -750,7 +750,7 @@ static bool verify_special_jvm_flags() {
750750

751751
// if flag has become obsolete it should not have a "globals" flag defined anymore.
752752
if (!version_less_than(JDK_Version::current(), flag.obsolete_in)) {
753-
if (JVMFlag::find_flag(flag.name) != NULL) {
753+
if (JVMFlag::find_declared_flag(flag.name) != NULL) {
754754
// Temporarily disable the warning: 8196739
755755
// warning("Global variable for obsolete special flag entry \"%s\" should be removed", flag.name);
756756
}
@@ -760,7 +760,7 @@ static bool verify_special_jvm_flags() {
760760
if (!flag.expired_in.is_undefined()) {
761761
// if flag has become expired it should not have a "globals" flag defined anymore.
762762
if (!version_less_than(JDK_Version::current(), flag.expired_in)) {
763-
if (JVMFlag::find_flag(flag.name) != NULL) {
763+
if (JVMFlag::find_declared_flag(flag.name) != NULL) {
764764
// Temporarily disable the warning: 8196739
765765
// warning("Global variable for expired flag entry \"%s\" should be removed", flag.name);
766766
}
@@ -844,42 +844,41 @@ void Arguments::describe_range_error(ArgsRange errcode) {
844844
}
845845
}
846846

847-
static bool set_bool_flag(const char* name, bool value, JVMFlag::Flags origin) {
848-
if (JVMFlag::boolAtPut(name, &value, origin) == JVMFlag::SUCCESS) {
847+
static bool set_bool_flag(JVMFlag* flag, bool value, JVMFlag::Flags origin) {
848+
if (JVMFlag::boolAtPut(flag, &value, origin) == JVMFlag::SUCCESS) {
849849
return true;
850850
} else {
851851
return false;
852852
}
853853
}
854854

855-
static bool set_fp_numeric_flag(const char* name, char* value, JVMFlag::Flags origin) {
855+
static bool set_fp_numeric_flag(JVMFlag* flag, char* value, JVMFlag::Flags origin) {
856856
char* end;
857857
errno = 0;
858858
double v = strtod(value, &end);
859859
if ((errno != 0) || (*end != 0)) {
860860
return false;
861861
}
862862

863-
if (JVMFlag::doubleAtPut(name, &v, origin) == JVMFlag::SUCCESS) {
863+
if (JVMFlag::doubleAtPut(flag, &v, origin) == JVMFlag::SUCCESS) {
864864
return true;
865865
}
866866
return false;
867867
}
868868

869-
static bool set_numeric_flag(const char* name, char* value, JVMFlag::Flags origin) {
869+
static bool set_numeric_flag(JVMFlag* flag, char* value, JVMFlag::Flags origin) {
870870
julong v;
871871
int int_v;
872872
intx intx_v;
873873
bool is_neg = false;
874-
JVMFlag* result = JVMFlag::find_flag(name, strlen(name));
875874

876-
if (result == NULL) {
875+
if (flag == NULL) {
877876
return false;
878877
}
879878

880879
// Check the sign first since atojulong() parses only unsigned values.
881880
if (*value == '-') {
882-
if (!result->is_intx() && !result->is_int()) {
881+
if (!flag->is_intx() && !flag->is_int()) {
883882
return false;
884883
}
885884
value++;
@@ -888,48 +887,48 @@ static bool set_numeric_flag(const char* name, char* value, JVMFlag::Flags origi
888887
if (!Arguments::atojulong(value, &v)) {
889888
return false;
890889
}
891-
if (result->is_int()) {
890+
if (flag->is_int()) {
892891
int_v = (int) v;
893892
if (is_neg) {
894893
int_v = -int_v;
895894
}
896-
return JVMFlag::intAtPut(result, &int_v, origin) == JVMFlag::SUCCESS;
897-
} else if (result->is_uint()) {
895+
return JVMFlag::intAtPut(flag, &int_v, origin) == JVMFlag::SUCCESS;
896+
} else if (flag->is_uint()) {
898897
uint uint_v = (uint) v;
899-
return JVMFlag::uintAtPut(result, &uint_v, origin) == JVMFlag::SUCCESS;
900-
} else if (result->is_intx()) {
898+
return JVMFlag::uintAtPut(flag, &uint_v, origin) == JVMFlag::SUCCESS;
899+
} else if (flag->is_intx()) {
901900
intx_v = (intx) v;
902901
if (is_neg) {
903902
intx_v = -intx_v;
904903
}
905-
return JVMFlag::intxAtPut(result, &intx_v, origin) == JVMFlag::SUCCESS;
906-
} else if (result->is_uintx()) {
904+
return JVMFlag::intxAtPut(flag, &intx_v, origin) == JVMFlag::SUCCESS;
905+
} else if (flag->is_uintx()) {
907906
uintx uintx_v = (uintx) v;
908-
return JVMFlag::uintxAtPut(result, &uintx_v, origin) == JVMFlag::SUCCESS;
909-
} else if (result->is_uint64_t()) {
907+
return JVMFlag::uintxAtPut(flag, &uintx_v, origin) == JVMFlag::SUCCESS;
908+
} else if (flag->is_uint64_t()) {
910909
uint64_t uint64_t_v = (uint64_t) v;
911-
return JVMFlag::uint64_tAtPut(result, &uint64_t_v, origin) == JVMFlag::SUCCESS;
912-
} else if (result->is_size_t()) {
910+
return JVMFlag::uint64_tAtPut(flag, &uint64_t_v, origin) == JVMFlag::SUCCESS;
911+
} else if (flag->is_size_t()) {
913912
size_t size_t_v = (size_t) v;
914-
return JVMFlag::size_tAtPut(result, &size_t_v, origin) == JVMFlag::SUCCESS;
915-
} else if (result->is_double()) {
913+
return JVMFlag::size_tAtPut(flag, &size_t_v, origin) == JVMFlag::SUCCESS;
914+
} else if (flag->is_double()) {
916915
double double_v = (double) v;
917-
return JVMFlag::doubleAtPut(result, &double_v, origin) == JVMFlag::SUCCESS;
916+
return JVMFlag::doubleAtPut(flag, &double_v, origin) == JVMFlag::SUCCESS;
918917
} else {
919918
return false;
920919
}
921920
}
922921

923-
static bool set_string_flag(const char* name, const char* value, JVMFlag::Flags origin) {
924-
if (JVMFlag::ccstrAtPut(name, &value, origin) != JVMFlag::SUCCESS) return false;
922+
static bool set_string_flag(JVMFlag* flag, const char* value, JVMFlag::Flags origin) {
923+
if (JVMFlag::ccstrAtPut(flag, &value, origin) != JVMFlag::SUCCESS) return false;
925924
// Contract: JVMFlag always returns a pointer that needs freeing.
926925
FREE_C_HEAP_ARRAY(char, value);
927926
return true;
928927
}
929928

930-
static bool append_to_string_flag(const char* name, const char* new_value, JVMFlag::Flags origin) {
929+
static bool append_to_string_flag(JVMFlag* flag, const char* new_value, JVMFlag::Flags origin) {
931930
const char* old_value = "";
932-
if (JVMFlag::ccstrAt(name, &old_value) != JVMFlag::SUCCESS) return false;
931+
if (JVMFlag::ccstrAt(flag, &old_value) != JVMFlag::SUCCESS) return false;
933932
size_t old_len = old_value != NULL ? strlen(old_value) : 0;
934933
size_t new_len = strlen(new_value);
935934
const char* value;
@@ -946,7 +945,7 @@ static bool append_to_string_flag(const char* name, const char* new_value, JVMFl
946945
value = buf;
947946
free_this_too = buf;
948947
}
949-
(void) JVMFlag::ccstrAtPut(name, &value, origin);
948+
(void) JVMFlag::ccstrAtPut(flag, &value, origin);
950949
// JVMFlag always returns a pointer that needs freeing.
951950
FREE_C_HEAP_ARRAY(char, value);
952951
if (free_this_too != NULL) {
@@ -1041,7 +1040,8 @@ bool Arguments::parse_argument(const char* arg, JVMFlag::Flags origin) {
10411040
if (real_name == NULL) {
10421041
return false;
10431042
}
1044-
return set_bool_flag(real_name, false, origin);
1043+
JVMFlag* flag = JVMFlag::find_flag(real_name);
1044+
return set_bool_flag(flag, false, origin);
10451045
}
10461046
if (sscanf(arg, "+%" XSTR(BUFLEN) NAME_RANGE "%c", name, &dummy) == 1) {
10471047
AliasedLoggingFlag alf = catch_logging_aliases(name, true);
@@ -1053,13 +1053,13 @@ bool Arguments::parse_argument(const char* arg, JVMFlag::Flags origin) {
10531053
if (real_name == NULL) {
10541054
return false;
10551055
}
1056-
return set_bool_flag(real_name, true, origin);
1056+
JVMFlag* flag = JVMFlag::find_flag(real_name);
1057+
return set_bool_flag(flag, true, origin);
10571058
}
10581059

10591060
char punct;
10601061
if (sscanf(arg, "%" XSTR(BUFLEN) NAME_RANGE "%c", name, &punct) == 2 && punct == '=') {
10611062
const char* value = strchr(arg, '=') + 1;
1062-
JVMFlag* flag;
10631063

10641064
// this scanf pattern matches both strings (handled here) and numbers (handled later))
10651065
AliasedLoggingFlag alf = catch_logging_aliases(name, true);
@@ -1071,15 +1071,15 @@ bool Arguments::parse_argument(const char* arg, JVMFlag::Flags origin) {
10711071
if (real_name == NULL) {
10721072
return false;
10731073
}
1074-
flag = JVMFlag::find_flag(real_name);
1074+
JVMFlag* flag = JVMFlag::find_flag(real_name);
10751075
if (flag != NULL && flag->is_ccstr()) {
10761076
if (flag->ccstr_accumulates()) {
1077-
return append_to_string_flag(real_name, value, origin);
1077+
return append_to_string_flag(flag, value, origin);
10781078
} else {
10791079
if (value[0] == '\0') {
10801080
value = NULL;
10811081
}
1082-
return set_string_flag(real_name, value, origin);
1082+
return set_string_flag(flag, value, origin);
10831083
}
10841084
} else {
10851085
warn_if_deprecated = false; // if arg is deprecated, we've already done warning...
@@ -1096,7 +1096,8 @@ bool Arguments::parse_argument(const char* arg, JVMFlag::Flags origin) {
10961096
if (real_name == NULL) {
10971097
return false;
10981098
}
1099-
return set_string_flag(real_name, value, origin);
1099+
JVMFlag* flag = JVMFlag::find_flag(real_name);
1100+
return set_string_flag(flag, value, origin);
11001101
}
11011102

11021103
#define SIGNED_FP_NUMBER_RANGE "[-0123456789.eE+]"
@@ -1111,7 +1112,8 @@ bool Arguments::parse_argument(const char* arg, JVMFlag::Flags origin) {
11111112
if (real_name == NULL) {
11121113
return false;
11131114
}
1114-
return set_fp_numeric_flag(real_name, value, origin);
1115+
JVMFlag* flag = JVMFlag::find_flag(real_name);
1116+
return set_fp_numeric_flag(flag, value, origin);
11151117
}
11161118
}
11171119

@@ -1121,7 +1123,8 @@ bool Arguments::parse_argument(const char* arg, JVMFlag::Flags origin) {
11211123
if (real_name == NULL) {
11221124
return false;
11231125
}
1124-
return set_numeric_flag(real_name, value, origin);
1126+
JVMFlag* flag = JVMFlag::find_flag(real_name);
1127+
return set_numeric_flag(flag, value, origin);
11251128
}
11261129

11271130
return false;
@@ -1277,7 +1280,7 @@ bool Arguments::process_argument(const char* arg,
12771280

12781281
// For locked flags, report a custom error message if available.
12791282
// Otherwise, report the standard unrecognized VM option.
1280-
JVMFlag* found_flag = JVMFlag::find_flag((const char*)argname, arg_len, true, true);
1283+
const JVMFlag* found_flag = JVMFlag::find_declared_flag((const char*)argname, arg_len);
12811284
if (found_flag != NULL) {
12821285
char locked_message_buf[BUFLEN];
12831286
JVMFlag::MsgType msg_type = found_flag->get_locked_message(locked_message_buf, BUFLEN);

0 commit comments

Comments
 (0)