< prev index next >

src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp

Print this page
rev 12363 : 8169373: Work around linux NPTL stack guard error.
Summary: Also skip libc guard page for compiler thread, merge similar code on linux platforms, and streamline libc guard page handling on linuxs390, linuxppc, aixppc.
Reviewed-by: dholmes, dcubed
rev 12364 : imported patch compilerGuardFix.patch


 822   return true;
 823 #else
 824 
 825   if (bytes < 2 * G) {
 826     return true;
 827   }
 828 
 829   char* addr = reserve_memory(bytes, NULL);
 830 
 831   if (addr != NULL) {
 832     release_memory(addr, bytes);
 833   }
 834 
 835   return addr != NULL;
 836 #endif // AMD64
 837 }
 838 
 839 ////////////////////////////////////////////////////////////////////////////////
 840 // thread stack
 841 
 842 #ifdef AMD64
 843 size_t os::Posix::_compiler_thread_min_stack_allowed = 64 * K;
 844 size_t os::Posix::_java_thread_min_stack_allowed = 64 * K;


 845 size_t os::Posix::_vm_internal_thread_min_stack_allowed = 64 * K;
 846 #else
 847 size_t os::Posix::_compiler_thread_min_stack_allowed = (48 DEBUG_ONLY(+ 4)) * K;
 848 size_t os::Posix::_java_thread_min_stack_allowed = (48 DEBUG_ONLY(+ 4)) * K;
 849 size_t os::Posix::_vm_internal_thread_min_stack_allowed = (48 DEBUG_ONLY(+ 4)) * K;

 850 

 851 #ifdef __GNUC__
 852 #define GET_GS() ({int gs; __asm__ volatile("movw %%gs, %w0":"=q"(gs)); gs&0xffff;})
 853 #endif
 854 
 855 #endif // AMD64
 856 
 857 // return default stack size for thr_type
 858 size_t os::Posix::default_stack_size(os::ThreadType thr_type) {
 859   // default stack size (compiler thread needs larger stack)
 860 #ifdef AMD64
 861   size_t s = (thr_type == os::compiler_thread ? 4 * M : 1 * M);
 862 #else
 863   size_t s = (thr_type == os::compiler_thread ? 2 * M : 512 * K);
 864 #endif // AMD64
 865   return s;
 866 }
 867 
 868 
 869 // Java thread:
 870 //
 871 //   Low memory addresses
 872 //    +------------------------+
 873 //    |                        |\  Java thread created by VM does not have glibc
 874 //    |    glibc guard page    | - guard, attached Java thread usually has




 822   return true;
 823 #else
 824 
 825   if (bytes < 2 * G) {
 826     return true;
 827   }
 828 
 829   char* addr = reserve_memory(bytes, NULL);
 830 
 831   if (addr != NULL) {
 832     release_memory(addr, bytes);
 833   }
 834 
 835   return addr != NULL;
 836 #endif // AMD64
 837 }
 838 
 839 ////////////////////////////////////////////////////////////////////////////////
 840 // thread stack
 841 
 842 // Minimum usable stack sizes required to get to user code. Space for
 843 // HotSpot guard pages is added later.
 844 size_t os::Posix::_compiler_thread_min_stack_allowed = 48 * K;
 845 size_t os::Posix::_java_thread_min_stack_allowed = 48 * K;
 846 #ifdef _LP64
 847 size_t os::Posix::_vm_internal_thread_min_stack_allowed = 64 * K;
 848 #else


 849 size_t os::Posix::_vm_internal_thread_min_stack_allowed = (48 DEBUG_ONLY(+ 4)) * K;
 850 #endif // _LP64
 851 
 852 #ifndef AMD64
 853 #ifdef __GNUC__
 854 #define GET_GS() ({int gs; __asm__ volatile("movw %%gs, %w0":"=q"(gs)); gs&0xffff;})
 855 #endif

 856 #endif // AMD64
 857 
 858 // return default stack size for thr_type
 859 size_t os::Posix::default_stack_size(os::ThreadType thr_type) {
 860   // default stack size (compiler thread needs larger stack)
 861 #ifdef AMD64
 862   size_t s = (thr_type == os::compiler_thread ? 4 * M : 1 * M);
 863 #else
 864   size_t s = (thr_type == os::compiler_thread ? 2 * M : 512 * K);
 865 #endif // AMD64
 866   return s;
 867 }
 868 
 869 
 870 // Java thread:
 871 //
 872 //   Low memory addresses
 873 //    +------------------------+
 874 //    |                        |\  Java thread created by VM does not have glibc
 875 //    |    glibc guard page    | - guard, attached Java thread usually has


< prev index next >