--- a/hotspot/src/share/vm/runtime/arguments.cpp Fri Nov 09 22:22:53 2012 -0800
+++ b/hotspot/src/share/vm/runtime/arguments.cpp Mon Nov 12 15:58:11 2012 -0500
@@ -24,6 +24,7 @@
#include "precompiled.hpp"
#include "classfile/javaAssertions.hpp"
+#include "classfile/symbolTable.hpp"
#include "compiler/compilerOracle.hpp"
#include "memory/allocation.inline.hpp"
#include "memory/cardTableRS.hpp"
@@ -1844,6 +1845,11 @@
status = status && verify_percentage(MinHeapFreeRatio, "MinHeapFreeRatio");
status = status && verify_percentage(MaxHeapFreeRatio, "MaxHeapFreeRatio");
+ // Divide by bucket size to prevent a large size from causing rollover when
+ // calculating amount of memory needed to be allocated for the String table.
+ status = status && verify_interval(StringTableSize, defaultStringTableSize,
+ (max_uintx / StringTable::bucket_size()), "StringTable size");
+
if (MinHeapFreeRatio > MaxHeapFreeRatio) {
jio_fprintf(defaultStream::error_stream(),
"MinHeapFreeRatio (" UINTX_FORMAT ") must be less than or "