< prev index next >

src/share/vm/runtime/arguments.cpp

Print this page
rev 12773 : imported patch arguments.cpp.diff


2570 unsigned int addreads_count = 0;
2571 unsigned int addexports_count = 0;
2572 unsigned int addopens_count = 0;
2573 unsigned int addmods_count = 0;
2574 unsigned int patch_mod_count = 0;
2575 
2576 bool Arguments::create_property(const char* prop_name, const char* prop_value, PropertyInternal internal) {
2577   size_t prop_len = strlen(prop_name) + strlen(prop_value) + 2;
2578   char* property = AllocateHeap(prop_len, mtArguments);
2579   int ret = jio_snprintf(property, prop_len, "%s=%s", prop_name, prop_value);
2580   if (ret < 0 || ret >= (int)prop_len) {
2581     FreeHeap(property);
2582     return false;
2583   }
2584   bool added = add_property(property, UnwriteableProperty, internal);
2585   FreeHeap(property);
2586   return added;
2587 }
2588 
2589 bool Arguments::create_numbered_property(const char* prop_base_name, const char* prop_value, unsigned int count) {
2590   // Make sure count is < 1,000. Otherwise, memory allocation will be too small.
2591   if (count < 1000) {
2592     size_t prop_len = strlen(prop_base_name) + strlen(prop_value) + 5;




2593     char* property = AllocateHeap(prop_len, mtArguments);
2594     int ret = jio_snprintf(property, prop_len, "%s.%d=%s", prop_base_name, count, prop_value);
2595     if (ret < 0 || ret >= (int)prop_len) {
2596       FreeHeap(property);

2597       return false;
2598     }
2599     bool added = add_property(property, UnwriteableProperty, InternalProperty);
2600     FreeHeap(property);
2601     return added;
2602   }


2603   return false;
2604 }
2605 
2606 Arguments::ArgsRange Arguments::parse_memory_size(const char* s,
2607                                                   julong* long_arg,
2608                                                   julong min_size) {
2609   if (!atojulong(s, long_arg)) return arg_unreadable;
2610   return check_memory_size(*long_arg, min_size);
2611 }
2612 
2613 // Parse JavaVMInitArgs structure
2614 
2615 jint Arguments::parse_vm_init_args(const JavaVMInitArgs *java_tool_options_args,
2616                                    const JavaVMInitArgs *java_options_args,
2617                                    const JavaVMInitArgs *cmd_line_args) {
2618   bool patch_mod_javabase = false;
2619 
2620   // Save default settings for some mode flags
2621   Arguments::_AlwaysCompileLoopMethods = AlwaysCompileLoopMethods;
2622   Arguments::_UseOnStackReplacement    = UseOnStackReplacement;




2570 unsigned int addreads_count = 0;
2571 unsigned int addexports_count = 0;
2572 unsigned int addopens_count = 0;
2573 unsigned int addmods_count = 0;
2574 unsigned int patch_mod_count = 0;
2575 
2576 bool Arguments::create_property(const char* prop_name, const char* prop_value, PropertyInternal internal) {
2577   size_t prop_len = strlen(prop_name) + strlen(prop_value) + 2;
2578   char* property = AllocateHeap(prop_len, mtArguments);
2579   int ret = jio_snprintf(property, prop_len, "%s=%s", prop_name, prop_value);
2580   if (ret < 0 || ret >= (int)prop_len) {
2581     FreeHeap(property);
2582     return false;
2583   }
2584   bool added = add_property(property, UnwriteableProperty, internal);
2585   FreeHeap(property);
2586   return added;
2587 }
2588 
2589 bool Arguments::create_numbered_property(const char* prop_base_name, const char* prop_value, unsigned int count) {
2590    const unsigned int props_count_limit = 1000;
2591    const int props_count_limit_log10 = 3;
2592    const int extra_symbols_count = 3; // includes '.', '=', '\0'
2593 
2594   // Make sure count is < props_count_limit. Otherwise, memory allocation will be too small.
2595   if (count < props_count_limit) {
2596     size_t prop_len = strlen(prop_base_name) + strlen(prop_value) + props_count_limit_log10 + extra_symbols_count;
2597     char* property = AllocateHeap(prop_len, mtArguments);
2598     int ret = jio_snprintf(property, prop_len, "%s.%d=%s", prop_base_name, count, prop_value);
2599     if (ret < 0 || ret >= (int)prop_len) {
2600       FreeHeap(property);
2601       jio_fprintf(defaultStream::error_stream(), "Failed to create property %s.%d=%s\n", prop_base_name, count, prop_value);
2602       return false;
2603     }
2604     bool added = add_property(property, UnwriteableProperty, InternalProperty);
2605     FreeHeap(property);
2606     return added;
2607   }
2608 
2609   jio_fprintf(defaultStream::error_stream(), "Property count limit exceeded: %s, limit=%d\n", prop_base_name, props_count_limit);
2610   return false;
2611 }
2612 
2613 Arguments::ArgsRange Arguments::parse_memory_size(const char* s,
2614                                                   julong* long_arg,
2615                                                   julong min_size) {
2616   if (!atojulong(s, long_arg)) return arg_unreadable;
2617   return check_memory_size(*long_arg, min_size);
2618 }
2619 
2620 // Parse JavaVMInitArgs structure
2621 
2622 jint Arguments::parse_vm_init_args(const JavaVMInitArgs *java_tool_options_args,
2623                                    const JavaVMInitArgs *java_options_args,
2624                                    const JavaVMInitArgs *cmd_line_args) {
2625   bool patch_mod_javabase = false;
2626 
2627   // Save default settings for some mode flags
2628   Arguments::_AlwaysCompileLoopMethods = AlwaysCompileLoopMethods;
2629   Arguments::_UseOnStackReplacement    = UseOnStackReplacement;


< prev index next >