This commit is contained in:
Poonam Bajaj 2014-11-18 20:51:55 +00:00
commit ae592ef688
2 changed files with 7 additions and 3 deletions

View file

@ -30,7 +30,9 @@
int ZeroStack::suggest_size(Thread *thread) const { int ZeroStack::suggest_size(Thread *thread) const {
assert(needs_setup(), "already set up"); 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) { void ZeroStack::handle_overflow(TRAPS) {

View file

@ -48,9 +48,11 @@ inline void ZeroStack::overflow_check(int required_words, TRAPS) {
// to use under normal circumstances. Note that the returned // to use under normal circumstances. Note that the returned
// value can be negative. // value can be negative.
inline int ZeroStack::abi_stack_available(Thread *thread) const { 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; 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 #endif // CPU_ZERO_VM_STACK_ZERO_INLINE_HPP