/[packages]/cauldron/java-1.8.0-openjdk/current/SOURCES/ppc_stack_overflow_fix.patch
ViewVC logotype

Contents of /cauldron/java-1.8.0-openjdk/current/SOURCES/ppc_stack_overflow_fix.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 757128 - (show annotations) (download)
Wed Oct 15 20:45:24 2014 UTC (9 years, 6 months ago) by luigiwalser
File size: 2314 byte(s)
sync with fedora as of 2014-09-25
1 diff --git a/src/cpu/zero/vm/stack_zero.hpp b/src/cpu/zero/vm/stack_zero.hpp
2 --- jdk8/hotspot/src/cpu/zero/vm/stack_zero.hpp
3 +++ jdk8/hotspot/src/cpu/zero/vm/stack_zero.hpp
4 @@ -99,7 +99,7 @@
5 int shadow_pages_size() const {
6 return _shadow_pages_size;
7 }
8 - int abi_stack_available(Thread *thread) const;
9 + ssize_t abi_stack_available(Thread *thread) const;
10
11 public:
12 void overflow_check(int required_words, TRAPS);
13 diff --git a/src/cpu/zero/vm/stack_zero.inline.hpp b/src/cpu/zero/vm/stack_zero.inline.hpp
14 --- jdk8/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp
15 +++ jdk8/hotspot/src/cpu/zero/vm/stack_zero.inline.hpp
16 @@ -47,10 +47,11 @@
17 // This method returns the amount of ABI stack available for us
18 // to use under normal circumstances. Note that the returned
19 // value can be negative.
20 -inline int ZeroStack::abi_stack_available(Thread *thread) const {
21 - int stack_used = thread->stack_base() - (address) &stack_used;
22 - int stack_free = thread->stack_size() - stack_used;
23 - return stack_free - shadow_pages_size();
24 +inline ssize_t ZeroStack::abi_stack_available(Thread *thread) const {
25 + ssize_t stack_used = thread->stack_base() - (address) &stack_used
26 + + (StackYellowPages+StackRedPages+StackShadowPages) * os::vm_page_size();
27 + ssize_t stack_free = thread->stack_size() - stack_used;
28 + return stack_free;
29 }
30
31 #endif // CPU_ZERO_VM_STACK_ZERO_INLINE_HPP
32 diff --git a/src/os/linux/vm/os_linux.cpp b/src/os/linux/vm/os_linux.cpp
33 --- jdk8/hotspot/src/os/linux/vm/os_linux.cpp
34 +++ jdk8/hotspot/src/os/linux/vm/os_linux.cpp
35 @@ -4700,6 +4700,13 @@
36 os::Linux::min_stack_allowed = MAX2(os::Linux::min_stack_allowed,
37 (size_t)(StackYellowPages+StackRedPages+StackShadowPages) * Linux::page_size() +
38 (2*BytesPerWord COMPILER2_PRESENT(+1)) * Linux::vm_default_page_size());
39 +#ifdef ZERO
40 + // If this is Zero, allow at the very minimum one page each for the
41 + // Zero stack and the native stack. This won't make any difference
42 + // for 4k pages, but is significant for large pages.
43 + os::Linux::min_stack_allowed = MAX2(os::Linux::min_stack_allowed,
44 + (size_t)(StackYellowPages+StackRedPages+StackShadowPages+2) * Linux::page_size());
45 +#endif
46
47 size_t threadStackSizeInBytes = ThreadStackSize * K;
48 if (threadStackSizeInBytes != 0 &&

  ViewVC Help
Powered by ViewVC 1.1.30