< prev index next >

src/hotspot/share/services/writeableFlags.cpp

Print this page

@@ -25,11 +25,10 @@
 #include "precompiled.hpp"
 #include "classfile/javaClasses.hpp"
 #include "memory/allocation.inline.hpp"
 #include "runtime/arguments.hpp"
 #include "runtime/flags/jvmFlag.hpp"
-#include "runtime/flags/jvmFlagRangeList.hpp"
 #include "runtime/java.hpp"
 #include "runtime/jniHandles.hpp"
 #include "services/writeableFlags.hpp"
 
 #define TEMP_BUF_SIZE 80

@@ -37,16 +36,15 @@
 static void buffer_concat(char* buffer, const char* src) {
   strncat(buffer, src, TEMP_BUF_SIZE - 1 - strlen(buffer));
 }
 
 static void print_flag_error_message_bounds(const JVMFlag* flag, char* buffer) {
-  JVMFlagRange* range = JVMFlagRangeList::find(flag);
-  if (range != NULL) {
+  if (flag->has_range()) {
     buffer_concat(buffer, "must have value in range ");
 
     stringStream stream;
-    range->print(&stream);
+    flag->print_range(&stream);
     const char* range_string = stream.as_string();
     size_t j = strlen(buffer);
     for (size_t i=0; j<TEMP_BUF_SIZE-1; i++) {
       if (range_string[i] == '\0') {
         break;

@@ -62,11 +60,11 @@
 static void print_flag_error_message_if_needed(JVMFlag::Error error, const JVMFlag* flag, FormatBuffer<80>& err_msg) {
   if (error == JVMFlag::SUCCESS) {
     return;
   }
 
-  const char* name = flag->_name;
+  const char* name = flag->name();
   char buffer[TEMP_BUF_SIZE] = {'\0'};
   if ((error != JVMFlag::MISSING_NAME) && (name != NULL)) {
     buffer_concat(buffer, name);
     buffer_concat(buffer, " error: ");
   } else {

@@ -94,10 +92,12 @@
   }
 
   err_msg.print("%s", buffer);
 }
 
+// TODO: templatize all of the following set_xxx_flag functions!
+
 // set a boolean global flag
 JVMFlag::Error WriteableFlags::set_bool_flag(const char* name, const char* arg, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) {
   if ((strcasecmp(arg, "true") == 0) || (*arg == '1' && *(arg + 1) == 0)) {
     return set_bool_flag(name, true, origin, err_msg);
   } else if ((strcasecmp(arg, "false") == 0) || (*arg == '0' && *(arg + 1) == 0)) {

@@ -107,11 +107,11 @@
   return JVMFlag::WRONG_FORMAT;
 }
 
 JVMFlag::Error WriteableFlags::set_bool_flag(const char* name, bool value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) {
   JVMFlag* flag = JVMFlag::find_flag(name);
-  JVMFlag::Error err = JVMFlag::boolAtPut(flag, &value, origin);
+  JVMFlag::Error err = JVMFlag::boolAtPut(flag, value, origin);
   print_flag_error_message_if_needed(err, flag, err_msg);
   return err;
 }
 
 // set a int global flag

@@ -125,11 +125,11 @@
   return JVMFlag::WRONG_FORMAT;
 }
 
 JVMFlag::Error WriteableFlags::set_int_flag(const char* name, int value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) {
   JVMFlag* flag = JVMFlag::find_flag(name);
-  JVMFlag::Error err = JVMFlag::intAtPut(flag, &value, origin);
+  JVMFlag::Error err = JVMFlag::intAtPut(flag, value, origin);
   print_flag_error_message_if_needed(err, flag, err_msg);
   return err;
 }
 
 // set a uint global flag

@@ -143,11 +143,11 @@
   return JVMFlag::WRONG_FORMAT;
 }
 
 JVMFlag::Error WriteableFlags::set_uint_flag(const char* name, uint value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) {
   JVMFlag* flag = JVMFlag::find_flag(name);
-  JVMFlag::Error err = JVMFlag::uintAtPut(flag, &value, origin);
+  JVMFlag::Error err = JVMFlag::uintAtPut(flag, value, origin);
   print_flag_error_message_if_needed(err, flag, err_msg);
   return err;
 }
 
 // set a intx global flag

@@ -161,11 +161,11 @@
   return JVMFlag::WRONG_FORMAT;
 }
 
 JVMFlag::Error WriteableFlags::set_intx_flag(const char* name, intx value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) {
   JVMFlag* flag = JVMFlag::find_flag(name);
-  JVMFlag::Error err = JVMFlag::intxAtPut(flag, &value, origin);
+  JVMFlag::Error err = JVMFlag::intxAtPut(flag, value, origin);
   print_flag_error_message_if_needed(err, flag, err_msg);
   return err;
 }
 
 // set a uintx global flag

@@ -179,11 +179,11 @@
   return JVMFlag::WRONG_FORMAT;
 }
 
 JVMFlag::Error WriteableFlags::set_uintx_flag(const char* name, uintx value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) {
   JVMFlag* flag = JVMFlag::find_flag(name);
-  JVMFlag::Error err = JVMFlag::uintxAtPut(flag, &value, origin);
+  JVMFlag::Error err = JVMFlag::uintxAtPut(flag, value, origin);
   print_flag_error_message_if_needed(err, flag, err_msg);
   return err;
 }
 
 // set a uint64_t global flag

@@ -197,11 +197,11 @@
   return JVMFlag::WRONG_FORMAT;
 }
 
 JVMFlag::Error WriteableFlags::set_uint64_t_flag(const char* name, uint64_t value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) {
   JVMFlag* flag = JVMFlag::find_flag(name);
-  JVMFlag::Error err = JVMFlag::uint64_tAtPut(flag, &value, origin);
+  JVMFlag::Error err = JVMFlag::uint64_tAtPut(flag, value, origin);
   print_flag_error_message_if_needed(err, flag, err_msg);
   return err;
 }
 
 // set a size_t global flag

@@ -215,11 +215,11 @@
   return JVMFlag::WRONG_FORMAT;
 }
 
 JVMFlag::Error WriteableFlags::set_size_t_flag(const char* name, size_t value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) {
   JVMFlag* flag = JVMFlag::find_flag(name);
-  JVMFlag::Error err = JVMFlag::size_tAtPut(flag, &value, origin);
+  JVMFlag::Error err = JVMFlag::size_tAtPut(flag, value, origin);
   print_flag_error_message_if_needed(err, flag, err_msg);
   return err;
 }
 
 // set a double global flag

@@ -233,19 +233,19 @@
   return JVMFlag::WRONG_FORMAT;
 }
 
 JVMFlag::Error WriteableFlags::set_double_flag(const char* name, double value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) {
   JVMFlag* flag = JVMFlag::find_flag(name);
-  JVMFlag::Error err = JVMFlag::doubleAtPut(flag, &value, origin);
+  JVMFlag::Error err = JVMFlag::doubleAtPut(flag, value, origin);
   print_flag_error_message_if_needed(err, flag, err_msg);
   return err;
 }
 
 // set a string global flag using value from AttachOperation
 JVMFlag::Error WriteableFlags::set_ccstr_flag(const char* name, const char* value, JVMFlag::Flags origin, FormatBuffer<80>& err_msg) {
   JVMFlag* flag = JVMFlag::find_flag(name);
-  JVMFlag::Error err = JVMFlag::ccstrAtPut(flag, &value, origin);
+  JVMFlag::Error err = JVMFlag::ccstrAtPut(flag, &value, origin); // TODO -- free the old value??
   print_flag_error_message_if_needed(err, flag, err_msg);
   return err;
 }
 
 /* sets a writeable flag to the provided value

@@ -298,27 +298,27 @@
   if (flag_value == NULL) {
     err_msg.print("flag value is missing");
     return JVMFlag::MISSING_VALUE;
   }
   if (f->is_bool()) {
-    return set_bool_flag(f->_name, flag_value, origin, err_msg);
+    return set_bool_flag(f->name(), flag_value, origin, err_msg);
   } else if (f->is_int()) {
-    return set_int_flag(f->_name, flag_value, origin, err_msg);
+    return set_int_flag(f->name(), flag_value, origin, err_msg);
   } else if (f->is_uint()) {
-    return set_uint_flag(f->_name, flag_value, origin, err_msg);
+    return set_uint_flag(f->name(), flag_value, origin, err_msg);
   } else if (f->is_intx()) {
-    return set_intx_flag(f->_name, flag_value, origin, err_msg);
+    return set_intx_flag(f->name(), flag_value, origin, err_msg);
   } else if (f->is_uintx()) {
-    return set_uintx_flag(f->_name, flag_value, origin, err_msg);
+    return set_uintx_flag(f->name(), flag_value, origin, err_msg);
   } else if (f->is_uint64_t()) {
-    return set_uint64_t_flag(f->_name, flag_value, origin, err_msg);
+    return set_uint64_t_flag(f->name(), flag_value, origin, err_msg);
   } else if (f->is_size_t()) {
-    return set_size_t_flag(f->_name, flag_value, origin, err_msg);
+    return set_size_t_flag(f->name(), flag_value, origin, err_msg);
   } else if (f->is_double()) {
-    return set_double_flag(f->_name, flag_value, origin, err_msg);
+    return set_double_flag(f->name(), flag_value, origin, err_msg);
   } else if (f->is_ccstr()) {
-    return set_ccstr_flag(f->_name, flag_value, origin, err_msg);
+    return set_ccstr_flag(f->name(), flag_value, origin, err_msg);
   } else {
     ShouldNotReachHere();
   }
   return JVMFlag::ERR_OTHER;
 }

@@ -327,40 +327,40 @@
 JVMFlag::Error WriteableFlags::set_flag_from_jvalue(JVMFlag* f, const void* value, JVMFlag::Flags origin,
                                                  FormatBuffer<80>& err_msg) {
   jvalue new_value = *(jvalue*)value;
   if (f->is_bool()) {
     bool bvalue = (new_value.z == JNI_TRUE ? true : false);
-    return set_bool_flag(f->_name, bvalue, origin, err_msg);
+    return set_bool_flag(f->name(), bvalue, origin, err_msg);
   } else if (f->is_int()) {
     int ivalue = (int)new_value.j;
-    return set_int_flag(f->_name, ivalue, origin, err_msg);
+    return set_int_flag(f->name(), ivalue, origin, err_msg);
   } else if (f->is_uint()) {
     uint uvalue = (uint)new_value.j;
-    return set_uint_flag(f->_name, uvalue, origin, err_msg);
+    return set_uint_flag(f->name(), uvalue, origin, err_msg);
   } else if (f->is_intx()) {
     intx ivalue = (intx)new_value.j;
-    return set_intx_flag(f->_name, ivalue, origin, err_msg);
+    return set_intx_flag(f->name(), ivalue, origin, err_msg);
   } else if (f->is_uintx()) {
     uintx uvalue = (uintx)new_value.j;
-    return set_uintx_flag(f->_name, uvalue, origin, err_msg);
+    return set_uintx_flag(f->name(), uvalue, origin, err_msg);
   } else if (f->is_uint64_t()) {
     uint64_t uvalue = (uint64_t)new_value.j;
-    return set_uint64_t_flag(f->_name, uvalue, origin, err_msg);
+    return set_uint64_t_flag(f->name(), uvalue, origin, err_msg);
   } else if (f->is_size_t()) {
     size_t svalue = (size_t)new_value.j;
-    return set_size_t_flag(f->_name, svalue, origin, err_msg);
+    return set_size_t_flag(f->name(), svalue, origin, err_msg);
   } else if (f->is_double()) {
     double dvalue = (double)new_value.d;
-    return set_double_flag(f->_name, dvalue, origin, err_msg);
+    return set_double_flag(f->name(), dvalue, origin, err_msg);
   } else if (f->is_ccstr()) {
     oop str = JNIHandles::resolve_external_guard(new_value.l);
     if (str == NULL) {
       err_msg.print("flag value is missing");
       return JVMFlag::MISSING_VALUE;
     }
     ccstr svalue = java_lang_String::as_utf8_string(str);
-    JVMFlag::Error ret = WriteableFlags::set_ccstr_flag(f->_name, svalue, origin, err_msg);
+    JVMFlag::Error ret = WriteableFlags::set_ccstr_flag(f->name(), svalue, origin, err_msg);
     if (ret != JVMFlag::SUCCESS) {
       FREE_C_HEAP_ARRAY(char, svalue);
     }
     return ret;
   } else {
< prev index next >