Code Review for hotspot

Prepared by:goetz on Wed Nov 16 16:45:45 CET 2016
Workspace:/net/sapmnt.sapjvm_work/d045726/oJ/8169373-ppc-stackFix-3-hs/hotspot
Compare against: http://hg.openjdk.java.net/jdk9/hs/hotspot
Compare against version:12307
Summary of changes: 95 lines changed: 31 ins; 13 del; 51 mod; 10712 unchg
Patch of changes: hotspot.patch
Author comments:

Fix OS guard page handling and minimum stack size computations.

Posix supports OS guard pages at the end of the stack. Java threads have stack guard pages handled by the VM. Thus for Java threads OS guard pages are superfluous and skipped.

CompilerThread, CodeCacheSweeperThread, JvmtiAgentThread and ServiceThread are subclasses of JavaThread and thus get VM handled stack guard pages.

They also get OS guard pages. This change removes the OS guard pages from these threads.

Also, minimum stack sizes of JavaThread's subclasses must leave room for the VM stack guard pages. This is not considered for the compiler threads. This change simplifies compuation of these minimal sizes:

The initialization of the _*_thread_min_stack_allowed now lists the minimal stack size required so that the VM starts up. This depends on the stack sizes generated by the C compiler and the C1 and C2 JIT compilers and thus is os and cpu dependent. I computed new initial values by subtracting the number of red, yellow, reserved and shadow pages configured on the corresponding platform.

During startup, the space required for the guard pages is added to these minimal pages. This space depends on the os page size and thus only can be set during startup.

Actually, minimal stack requirements now are less. I tested that jvm98 runs without problems with minimal stacks set. I tested and and sized on the following platforms:


Thread kind:           Java       Compiler   VM
                       old  new   old  new   old  new

bsd     x86_64  dbg:   240  152    64   64    64  64
                opt:   240  144    64   64    64  64

linux   x86_64  dbg:   240  144    64   64    64  64
                opt:   232  136    64   64    64  64

solaris sparc   dbg:
                opt:   240  192   128  128   128 128

aix     ppc64   dbg:   512  384   384  384   128  64
                opt:   512  384   384  384   128  64
linux   ppc64   dbg:   512  384   128  256   128  64  
                opt:   512  384   128  256   128  64  
linux   ppc64le dbg:   512  384   128  256   128  64  
                opt:   512  384   128  256   128  64  

linux   s390    dbg:   236  140   128   96   128  32
                opt:   236  124   128   64   128  32
Legend: Modified file
Deleted file
New file

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/ppc/vm/globals_ppc.hpp

rev 12308 : imported patch new_os_guard_for_java_thread.patch
2 lines changed: 2 ins; 0 del; 0 mod; 199 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/cpu/x86/vm/globals_x86.hpp

rev 12308 : imported patch new_os_guard_for_java_thread.patch
5 lines changed: 1 ins; 0 del; 4 mod; 203 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os/posix/vm/os_posix.cpp

rev 12307 : 8169373: Work around linux NPTL stack guard error.
Summary: Also streamline OS guard page handling on linuxs390, linuxppc, aixppc.
rev 12308 : imported patch new_os_guard_for_java_thread.patch
9 lines changed: 3 ins; 1 del; 5 mod; 1345 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os/posix/vm/os_posix.hpp

rev 12308 : imported patch new_os_guard_for_java_thread.patch
5 lines changed: 4 ins; 0 del; 1 mod; 116 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os_cpu/aix_ppc/vm/os_aix_ppc.cpp

rev 12307 : 8169373: Work around linux NPTL stack guard error.
Summary: Also streamline OS guard page handling on linuxs390, linuxppc, aixppc.
rev 12308 : imported patch new_os_guard_for_java_thread.patch
6 lines changed: 0 ins; 0 del; 6 mod; 638 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp

rev 12308 : imported patch new_os_guard_for_java_thread.patch
10 lines changed: 4 ins; 3 del; 3 mod; 1091 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp

rev 12307 : 8169373: Work around linux NPTL stack guard error.
Summary: Also streamline OS guard page handling on linuxs390, linuxppc, aixppc.
rev 12308 : imported patch new_os_guard_for_java_thread.patch
5 lines changed: 2 ins; 0 del; 3 mod; 750 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp

rev 12307 : 8169373: Work around linux NPTL stack guard error.
Summary: Also streamline OS guard page handling on linuxs390, linuxppc, aixppc.
rev 12308 : imported patch new_os_guard_for_java_thread.patch
8 lines changed: 2 ins; 0 del; 6 mod; 699 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os_cpu/linux_s390/vm/os_linux_s390.cpp

rev 12307 : 8169373: Work around linux NPTL stack guard error.
Summary: Also streamline OS guard page handling on linuxs390, linuxppc, aixppc.
rev 12308 : imported patch new_os_guard_for_java_thread.patch
6 lines changed: 0 ins; 0 del; 6 mod; 649 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os_cpu/linux_sparc/vm/os_linux_sparc.cpp

rev 12307 : 8169373: Work around linux NPTL stack guard error.
Summary: Also streamline OS guard page handling on linuxs390, linuxppc, aixppc.
rev 12308 : imported patch new_os_guard_for_java_thread.patch
5 lines changed: 2 ins; 0 del; 3 mod; 757 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os_cpu/linux_x86/vm/os_linux_x86.cpp

rev 12307 : 8169373: Work around linux NPTL stack guard error.
Summary: Also streamline OS guard page handling on linuxs390, linuxppc, aixppc.
rev 12308 : imported patch new_os_guard_for_java_thread.patch
9 lines changed: 2 ins; 2 del; 5 mod; 959 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os_cpu/linux_zero/vm/os_linux_zero.cpp

rev 12308 : imported patch new_os_guard_for_java_thread.patch
1 line changed: 0 ins; 0 del; 1 mod; 520 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp

rev 12308 : imported patch new_os_guard_for_java_thread.patch
8 lines changed: 2 ins; 4 del; 2 mod; 827 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp

rev 12308 : imported patch new_os_guard_for_java_thread.patch
15 lines changed: 7 ins; 3 del; 5 mod; 981 unchg

Cdiffs Udiffs Wdiffs Sdiffs Frames Old New Patch Raw src/share/vm/runtime/os.hpp

rev 12308 : imported patch new_os_guard_for_java_thread.patch
1 line changed: 0 ins; 0 del; 1 mod; 978 unchg

This code review page was prepared using /sapmnt/home/d045726/bin/webrev.ksh (vers 25.12-hg+openjdk.java.net).