--- a/hotspot/src/share/vm/prims/jni.cpp Mon Jul 14 10:50:20 2014 +0200
+++ b/hotspot/src/share/vm/prims/jni.cpp Mon Jul 14 10:52:52 2014 +0200
@@ -247,15 +247,6 @@
"Bug in native code: jfieldID offset must address interior of object");
}
-// Pick a reasonable higher bound for local capacity requested
-// for EnsureLocalCapacity and PushLocalFrame. We don't want it too
-// high because a test (or very unusual application) may try to allocate
-// that many handles and run out of swap space. An implementation is
-// permitted to allocate more handles than the ensured capacity, so this
-// value is set high enough to prevent compatibility problems.
-const int MAX_REASONABLE_LOCAL_CAPACITY = 4*K;
-
-
// Wrapper to trace JNI functions
#ifdef ASSERT
@@ -741,7 +732,8 @@
HOTSPOT_JNI_PUSHLOCALFRAME_ENTRY(env, capacity);
//%note jni_11
- if (capacity < 0 || capacity > MAX_REASONABLE_LOCAL_CAPACITY) {
+ if (capacity < 0 ||
+ ((MaxJNILocalCapacity > 0) && (capacity > MaxJNILocalCapacity))) {
HOTSPOT_JNI_PUSHLOCALFRAME_RETURN((uint32_t)JNI_ERR);
return JNI_ERR;
}
@@ -844,7 +836,8 @@
HOTSPOT_JNI_ENSURELOCALCAPACITY_ENTRY(env, capacity);
jint ret;
- if (capacity >= 0 && capacity <= MAX_REASONABLE_LOCAL_CAPACITY) {
+ if (capacity >= 0 &&
+ ((MaxJNILocalCapacity <= 0) || (capacity <= MaxJNILocalCapacity))) {
ret = JNI_OK;
} else {
ret = JNI_ERR;