diff --git a/src/share/vm/memory/allocation.cpp b/src/share/vm/memory/allocation.cpp index ada58593238bad0cd949aabcb3da1f5ff93b1d72..9dfe26dd4d4b124d2e876059cf24512b008ea66d 100644 --- a/src/share/vm/memory/allocation.cpp +++ b/src/share/vm/memory/allocation.cpp @@ -58,7 +58,7 @@ void* ResourceObj::operator new(size_t size, allocation_type type) { void ResourceObj::operator delete(void* p) { assert(((ResourceObj *)p)->allocated_on_C_heap(), "delete only allowed for C_HEAP objects"); - DEBUG_ONLY(((ResourceObj *)p)->_allocation = (uintptr_t) badHeapOopVal;) + DEBUG_ONLY(((ResourceObj *)p)->_allocation = (uintptr_t)badHeapOopVal;) FreeHeap(p); } @@ -104,7 +104,7 @@ ResourceObj& ResourceObj::operator=(const ResourceObj& r) { // default copy assi ResourceObj::~ResourceObj() { // allocated_on_C_heap() also checks that encoded (in _allocation) address == this. if (!allocated_on_C_heap()) { // ResourceObj::delete() zaps _allocation for C_heap. - _allocation = (uintptr_t) badHeapOopVal; // zap type + _allocation = (uintptr_t)badHeapOopVal; // zap type } } #endif // ASSERT diff --git a/src/share/vm/runtime/arguments.cpp b/src/share/vm/runtime/arguments.cpp index 1e30d50224f500e13d797f66dc04ddcee61afe1a..80c004d5034968a172e155524d1bf9f1907cbb17 100644 --- a/src/share/vm/runtime/arguments.cpp +++ b/src/share/vm/runtime/arguments.cpp @@ -1561,6 +1561,18 @@ bool Arguments::verify_interval(uintx val, uintx min, return false; } +bool Arguments::verify_min_value(intx val, intx min, const char* name) { + // Returns true if given value is greater than specified min threshold + // false, otherwise. + if (val >= min ) { + return true; + } + jio_fprintf(defaultStream::error_stream(), + "%s of " INTX_FORMAT " is invalid; must be greater than " INTX_FORMAT "\n", + name, val, min); + return false; +} + bool Arguments::verify_percentage(uintx value, const char* name) { if (value <= 100) { return true; @@ -1613,6 +1625,16 @@ bool Arguments::check_gc_consistency() { return status; } +// Check stack pages settings +bool Arguments::check_stack_pages() +{ + bool status = true; + status = status && verify_min_value(StackYellowPages, 1, "StackYellowPages"); + status = status && verify_min_value(StackRedPages, 1, "StackRedPages"); + status = status && verify_min_value(StackShadowPages, 1, "StackShadowPages"); + return status; +} + // Check the consistency of vm_init_args bool Arguments::check_vm_args_consistency() { // Method for adding checks for flag consistency. @@ -1725,6 +1747,7 @@ bool Arguments::check_vm_args_consistency() { } status = status && check_gc_consistency(); + status = status && check_stack_pages(); if (_has_alloc_profile) { if (UseParallelGC || UseParallelOldGC) { diff --git a/src/share/vm/runtime/arguments.hpp b/src/share/vm/runtime/arguments.hpp index 15cf8ee3d4c6ff5ccabd7af79e67965c1ce6932b..565f5f268cda8bfc69ec437b7b68f7e52db367c4 100644 --- a/src/share/vm/runtime/arguments.hpp +++ b/src/share/vm/runtime/arguments.hpp @@ -338,6 +338,7 @@ class Arguments : AllStatic { } static bool verify_interval(uintx val, uintx min, uintx max, const char* name); + static bool verify_min_value(intx val, intx min, const char* name); static bool verify_percentage(uintx value, const char* name); static void describe_range_error(ArgsRange errcode); static ArgsRange check_memory_size(julong size, julong min_size); @@ -400,6 +401,8 @@ class Arguments : AllStatic { static bool check_gc_consistency(); // Check consistecy or otherwise of VM argument settings static bool check_vm_args_consistency(); + // Check stack pages settings + static bool check_stack_pages(); // Used by os_solaris static bool process_settings_file(const char* file_name, bool should_exist, jboolean ignore_unrecognized);