393 static abort_hook_t _abort_hook; 394 static exit_hook_t _exit_hook; 395 static vfprintf_hook_t _vfprintf_hook; 396 397 // System properties 398 static bool add_property(const char* prop, PropertyWriteable writeable=WriteableProperty, 399 PropertyInternal internal=ExternalProperty); 400 401 static bool create_property(const char* prop_name, const char* prop_value, PropertyInternal internal); 402 static bool create_numbered_property(const char* prop_base_name, const char* prop_value, unsigned int count); 403 404 static int process_patch_mod_option(const char* patch_mod_tail, bool* patch_mod_javabase); 405 406 // Aggressive optimization flags. 407 static jint set_aggressive_opts_flags(); 408 409 static jint set_aggressive_heap_flags(); 410 411 // Argument parsing 412 static void do_pd_flag_adjustments(); 413 static bool parse_argument(const char* arg, Flag::Flags origin); 414 static bool process_argument(const char* arg, jboolean ignore_unrecognized, Flag::Flags origin); 415 static void process_java_launcher_argument(const char*, void*); 416 static void process_java_compiler_argument(const char* arg); 417 static jint parse_options_environment_variable(const char* name, ScopedVMInitArgs* vm_args); 418 static jint parse_java_tool_options_environment_variable(ScopedVMInitArgs* vm_args); 419 static jint parse_java_options_environment_variable(ScopedVMInitArgs* vm_args); 420 static jint parse_vm_options_file(const char* file_name, ScopedVMInitArgs* vm_args); 421 static jint parse_options_buffer(const char* name, char* buffer, const size_t buf_len, ScopedVMInitArgs* vm_args); 422 static jint parse_xss(const JavaVMOption* option, const char* tail, intx* out_ThreadStackSize); 423 static jint insert_vm_options_file(const JavaVMInitArgs* args, 424 const char* vm_options_file, 425 const int vm_options_file_pos, 426 ScopedVMInitArgs* vm_options_file_args, 427 ScopedVMInitArgs* args_out); 428 static bool args_contains_vm_options_file_arg(const JavaVMInitArgs* args); 429 static jint expand_vm_options_as_needed(const JavaVMInitArgs* args_in, 430 ScopedVMInitArgs* mod_args, 431 JavaVMInitArgs** args_out); 432 static jint match_special_option_and_act(const JavaVMInitArgs* args, 433 ScopedVMInitArgs* args_out); 434 435 static bool handle_deprecated_print_gc_flags(); 436 437 static void handle_extra_cms_flags(const char* msg); 438 439 static jint parse_vm_init_args(const JavaVMInitArgs *java_tool_options_args, 440 const JavaVMInitArgs *java_options_args, 441 const JavaVMInitArgs *cmd_line_args); 442 static jint parse_each_vm_init_arg(const JavaVMInitArgs* args, bool* patch_mod_javabase, Flag::Flags origin); 443 static jint finalize_vm_init_args(bool patch_mod_javabase); 444 static bool is_bad_option(const JavaVMOption* option, jboolean ignore, const char* option_type); 445 446 static bool is_bad_option(const JavaVMOption* option, jboolean ignore) { 447 return is_bad_option(option, ignore, NULL); 448 } 449 450 static void describe_range_error(ArgsRange errcode); 451 static ArgsRange check_memory_size(julong size, julong min_size, julong max_size); 452 static ArgsRange parse_memory_size(const char* s, julong* long_arg, 453 julong min_size, julong max_size = max_uintx); 454 // Parse a string for a unsigned integer. Returns true if value 455 // is an unsigned integer greater than or equal to the minimum 456 // parameter passed and returns the value in uintx_arg. Returns 457 // false otherwise, with uintx_arg undefined. 458 static bool parse_uintx(const char* value, uintx* uintx_arg, 459 uintx min_size); 460 461 // methods to build strings from individual args 462 static void build_jvm_args(const char* arg); | 393 static abort_hook_t _abort_hook; 394 static exit_hook_t _exit_hook; 395 static vfprintf_hook_t _vfprintf_hook; 396 397 // System properties 398 static bool add_property(const char* prop, PropertyWriteable writeable=WriteableProperty, 399 PropertyInternal internal=ExternalProperty); 400 401 static bool create_property(const char* prop_name, const char* prop_value, PropertyInternal internal); 402 static bool create_numbered_property(const char* prop_base_name, const char* prop_value, unsigned int count); 403 404 static int process_patch_mod_option(const char* patch_mod_tail, bool* patch_mod_javabase); 405 406 // Aggressive optimization flags. 407 static jint set_aggressive_opts_flags(); 408 409 static jint set_aggressive_heap_flags(); 410 411 // Argument parsing 412 static void do_pd_flag_adjustments(); 413 static bool parse_argument(const char* arg, JVMFlag::Flags origin); 414 static bool process_argument(const char* arg, jboolean ignore_unrecognized, JVMFlag::Flags origin); 415 static void process_java_launcher_argument(const char*, void*); 416 static void process_java_compiler_argument(const char* arg); 417 static jint parse_options_environment_variable(const char* name, ScopedVMInitArgs* vm_args); 418 static jint parse_java_tool_options_environment_variable(ScopedVMInitArgs* vm_args); 419 static jint parse_java_options_environment_variable(ScopedVMInitArgs* vm_args); 420 static jint parse_vm_options_file(const char* file_name, ScopedVMInitArgs* vm_args); 421 static jint parse_options_buffer(const char* name, char* buffer, const size_t buf_len, ScopedVMInitArgs* vm_args); 422 static jint parse_xss(const JavaVMOption* option, const char* tail, intx* out_ThreadStackSize); 423 static jint insert_vm_options_file(const JavaVMInitArgs* args, 424 const char* vm_options_file, 425 const int vm_options_file_pos, 426 ScopedVMInitArgs* vm_options_file_args, 427 ScopedVMInitArgs* args_out); 428 static bool args_contains_vm_options_file_arg(const JavaVMInitArgs* args); 429 static jint expand_vm_options_as_needed(const JavaVMInitArgs* args_in, 430 ScopedVMInitArgs* mod_args, 431 JavaVMInitArgs** args_out); 432 static jint match_special_option_and_act(const JavaVMInitArgs* args, 433 ScopedVMInitArgs* args_out); 434 435 static bool handle_deprecated_print_gc_flags(); 436 437 static void handle_extra_cms_flags(const char* msg); 438 439 static jint parse_vm_init_args(const JavaVMInitArgs *java_tool_options_args, 440 const JavaVMInitArgs *java_options_args, 441 const JavaVMInitArgs *cmd_line_args); 442 static jint parse_each_vm_init_arg(const JavaVMInitArgs* args, bool* patch_mod_javabase, JVMFlag::Flags origin); 443 static jint finalize_vm_init_args(bool patch_mod_javabase); 444 static bool is_bad_option(const JavaVMOption* option, jboolean ignore, const char* option_type); 445 446 static bool is_bad_option(const JavaVMOption* option, jboolean ignore) { 447 return is_bad_option(option, ignore, NULL); 448 } 449 450 static void describe_range_error(ArgsRange errcode); 451 static ArgsRange check_memory_size(julong size, julong min_size, julong max_size); 452 static ArgsRange parse_memory_size(const char* s, julong* long_arg, 453 julong min_size, julong max_size = max_uintx); 454 // Parse a string for a unsigned integer. Returns true if value 455 // is an unsigned integer greater than or equal to the minimum 456 // parameter passed and returns the value in uintx_arg. Returns 457 // false otherwise, with uintx_arg undefined. 458 static bool parse_uintx(const char* value, uintx* uintx_arg, 459 uintx min_size); 460 461 // methods to build strings from individual args 462 static void build_jvm_args(const char* arg); |