changeset 1669:ebfb7c68865e

Merge
author dcubed
date Mon, 23 Aug 2010 08:44:03 -0700
parents b0b9d64ed9bc f8c5d1bdaad4
children b4099f5786da c7004d700b49
files src/share/vm/memory/allocation.cpp src/share/vm/runtime/arguments.cpp
diffstat 3 files changed, 28 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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) {
--- 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);