# HG changeset patch # User dcubed # Date 1282578243 25200 # Node ID ebfb7c68865e1b2cd65a4b4a2fee59ba81e61046 # Parent b0b9d64ed9bce63141a55d3d9b4799de68ad7956# Parent f8c5d1bdaad433f730c3c63f4f96f69b6e6b5e63 Merge diff -r b0b9d64ed9bc -r ebfb7c68865e src/share/vm/memory/allocation.cpp --- a/src/share/vm/memory/allocation.cpp Fri Aug 20 14:24:47 2010 -0700 +++ b/src/share/vm/memory/allocation.cpp Mon Aug 23 08:44:03 2010 -0700 @@ -58,7 +58,7 @@ 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() { // 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 -r b0b9d64ed9bc -r ebfb7c68865e src/share/vm/runtime/arguments.cpp --- a/src/share/vm/runtime/arguments.cpp Fri Aug 20 14:24:47 2010 -0700 +++ b/src/share/vm/runtime/arguments.cpp Mon Aug 23 08:44:03 2010 -0700 @@ -1561,6 +1561,18 @@ 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 @@ 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 @@ } status = status && check_gc_consistency(); + status = status && check_stack_pages(); if (_has_alloc_profile) { if (UseParallelGC || UseParallelOldGC) { diff -r b0b9d64ed9bc -r ebfb7c68865e src/share/vm/runtime/arguments.hpp --- a/src/share/vm/runtime/arguments.hpp Fri Aug 20 14:24:47 2010 -0700 +++ b/src/share/vm/runtime/arguments.hpp Mon Aug 23 08:44:03 2010 -0700 @@ -338,6 +338,7 @@ } 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 @@ 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);