Merge
authorpoonam
Tue, 18 Nov 2014 20:51:55 +0000
changeset 27671 d1e2e443e43a
parent 27670 e86850ef14cf (current diff)
parent 27669 c2c526bc1a18 (diff)
child 27672 d24adedd3655
Merge
--- a/hotspot/src/cpu/zero/vm/stack_zero.cpp	Tue Nov 18 10:19:04 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/stack_zero.cpp	Tue Nov 18 20:51:55 2014 +0000
@@ -30,7 +30,9 @@
 
 int ZeroStack::suggest_size(Thread *thread) const {
   assert(needs_setup(), "already set up");
-  return align_size_down(abi_stack_available(thread) / 2, wordSize);
+  int abi_available = abi_stack_available(thread);
+  assert(abi_available >= 0, "available abi stack must be >= 0");
+  return align_size_down(abi_available / 2, wordSize);
 }
 
 void ZeroStack::handle_overflow(TRAPS) {
--- a/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp	Tue Nov 18 10:19:04 2014 -0800
+++ b/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp	Tue Nov 18 20:51:55 2014 +0000
@@ -48,9 +48,11 @@
 // to use under normal circumstances.  Note that the returned
 // value can be negative.
 inline int ZeroStack::abi_stack_available(Thread *thread) const {
-  int stack_used = thread->stack_base() - (address) &stack_used;
+  guarantee(Thread::current() == thread, "should run in the same thread");
+  int stack_used = thread->stack_base() - (address) &stack_used
+    + (StackYellowPages+StackRedPages+StackShadowPages) * os::vm_page_size();
   int stack_free = thread->stack_size() - stack_used;
-  return stack_free - shadow_pages_size();
+  return stack_free;
 }
 
 #endif // CPU_ZERO_VM_STACK_ZERO_INLINE_HPP