2018-09-19 12:35:04 +00:00
|
|
|
diff --git a/openjdk/hotspot/src/cpu/zero/vm/stack_zero.hpp b/openjdk/hotspot/src/cpu/zero/vm/stack_zero.hpp
|
|
|
|
index 6048cf2ac..9bbce8a7b 100644
|
|
|
|
--- a/openjdk/hotspot/src/cpu/zero/vm/stack_zero.hpp
|
|
|
|
+++ b/openjdk/hotspot/src/cpu/zero/vm/stack_zero.hpp
|
|
|
|
@@ -96,7 +96,7 @@ class ZeroStack {
|
2017-08-15 17:40:47 +00:00
|
|
|
int shadow_pages_size() const {
|
|
|
|
return _shadow_pages_size;
|
|
|
|
}
|
|
|
|
- int abi_stack_available(Thread *thread) const;
|
|
|
|
+ ssize_t abi_stack_available(Thread *thread) const;
|
|
|
|
|
|
|
|
public:
|
|
|
|
void overflow_check(int required_words, TRAPS);
|
2018-09-19 12:35:04 +00:00
|
|
|
diff --git a/openjdk/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp b/openjdk/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp
|
|
|
|
index 02d12e8e9..011f3c701 100644
|
|
|
|
--- a/openjdk/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp
|
|
|
|
+++ b/openjdk/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp
|
|
|
|
@@ -47,11 +47,11 @@ inline void ZeroStack::overflow_check(int required_words, TRAPS) {
|
2017-08-15 17:40:47 +00:00
|
|
|
// This method returns the amount of ABI stack available for us
|
|
|
|
// to use under normal circumstances. Note that the returned
|
|
|
|
// value can be negative.
|
|
|
|
-inline int ZeroStack::abi_stack_available(Thread *thread) const {
|
|
|
|
+inline ssize_t ZeroStack::abi_stack_available(Thread *thread) const {
|
|
|
|
guarantee(Thread::current() == thread, "should run in the same thread");
|
|
|
|
- int stack_used = thread->stack_base() - (address) &stack_used
|
|
|
|
+ ssize_t stack_used = thread->stack_base() - (address) &stack_used
|
|
|
|
+ (JavaThread::stack_guard_zone_size() + JavaThread::stack_shadow_zone_size());
|
|
|
|
- int stack_free = thread->stack_size() - stack_used;
|
|
|
|
+ ssize_t stack_free = thread->stack_size() - stack_used;
|
|
|
|
return stack_free;
|
|
|
|
}
|
|
|
|
|
2018-09-19 12:35:04 +00:00
|
|
|
diff --git a/openjdk/hotspot/src/os/posix/vm/os_posix.cpp b/openjdk/hotspot/src/os/posix/vm/os_posix.cpp
|
2018-09-24 10:03:44 +00:00
|
|
|
index 5885906f6..53d3647af 100644
|
2018-09-19 12:35:04 +00:00
|
|
|
--- a/openjdk/hotspot/src/os/posix/vm/os_posix.cpp
|
|
|
|
+++ b/openjdk/hotspot/src/os/posix/vm/os_posix.cpp
|
|
|
|
@@ -1121,6 +1121,13 @@ jint os::Posix::set_minimum_stack_sizes() {
|
2017-08-15 17:40:47 +00:00
|
|
|
JavaThread::stack_shadow_zone_size();
|
|
|
|
|
|
|
|
_java_thread_min_stack_allowed = align_size_up(_java_thread_min_stack_allowed, vm_page_size());
|
|
|
|
+#ifdef ZERO
|
|
|
|
+ // If this is Zero, allow at the very minimum one page each for the
|
|
|
|
+ // Zero stack and the native stack. This won't make any difference
|
|
|
|
+ // for 4k pages, but is significant for large pages.
|
2018-09-24 10:03:44 +00:00
|
|
|
+ size_t _zero_min_stack_allowed = align_size_up((size_t)(_java_thread_min_stack_allowed + JavaThread::stack_guard_zone_size() + JavaThread::stack_shadow_zone_size() + 2) * vm_page_size(), vm_page_size());
|
2018-09-19 12:35:04 +00:00
|
|
|
+ _java_thread_min_stack_allowed = MAX2(_java_thread_min_stack_allowed, _zero_min_stack_allowed);
|
2017-08-15 17:40:47 +00:00
|
|
|
+#endif
|
|
|
|
|
|
|
|
size_t stack_size_in_bytes = ThreadStackSize * K;
|
|
|
|
if (stack_size_in_bytes != 0 &&
|