836 |
836 |
837 //////////////////////////////////////////////////////////////////////////////// |
837 //////////////////////////////////////////////////////////////////////////////// |
838 // thread stack |
838 // thread stack |
839 |
839 |
840 #ifdef AMD64 |
840 #ifdef AMD64 |
841 size_t os::Bsd::min_stack_allowed = 64 * K; |
841 size_t os::Posix::_compiler_thread_min_stack_allowed = 64 * K; |
842 #else |
842 size_t os::Posix::_java_thread_min_stack_allowed = 64 * K; |
843 size_t os::Bsd::min_stack_allowed = (48 DEBUG_ONLY(+4))*K; |
843 size_t os::Posix::_vm_internal_thread_min_stack_allowed = 64 * K; |
|
844 #else |
|
845 size_t os::Posix::_compiler_thread_min_stack_allowed = (48 DEBUG_ONLY(+ 4)) * K; |
|
846 size_t os::Posix::_java_thread_min_stack_allowed = (48 DEBUG_ONLY(+ 4)) * K; |
|
847 size_t os::Posix::_vm_internal_thread_min_stack_allowed = (48 DEBUG_ONLY(+ 4)) * K; |
844 |
848 |
845 #ifdef __GNUC__ |
849 #ifdef __GNUC__ |
846 #define GET_GS() ({int gs; __asm__ volatile("movw %%gs, %w0":"=q"(gs)); gs&0xffff;}) |
850 #define GET_GS() ({int gs; __asm__ volatile("movw %%gs, %w0":"=q"(gs)); gs&0xffff;}) |
847 #endif |
851 #endif |
848 |
852 |
849 #endif // AMD64 |
853 #endif // AMD64 |
850 |
854 |
851 // return default stack size for thr_type |
855 // return default stack size for thr_type |
852 size_t os::Bsd::default_stack_size(os::ThreadType thr_type) { |
856 size_t os::Posix::default_stack_size(os::ThreadType thr_type) { |
853 // default stack size (compiler thread needs larger stack) |
857 // default stack size (compiler thread needs larger stack) |
854 #ifdef AMD64 |
858 #ifdef AMD64 |
855 size_t s = (thr_type == os::compiler_thread ? 4 * M : 1 * M); |
859 size_t s = (thr_type == os::compiler_thread ? 4 * M : 1 * M); |
856 #else |
860 #else |
857 size_t s = (thr_type == os::compiler_thread ? 2 * M : 512 * K); |
861 size_t s = (thr_type == os::compiler_thread ? 2 * M : 512 * K); |
858 #endif // AMD64 |
862 #endif // AMD64 |
859 return s; |
863 return s; |
860 } |
864 } |
861 |
865 |
862 size_t os::Bsd::default_guard_size(os::ThreadType thr_type) { |
|
863 // Creating guard page is very expensive. Java thread has HotSpot |
|
864 // guard page, only enable glibc guard page for non-Java threads. |
|
865 return (thr_type == java_thread ? 0 : page_size()); |
|
866 } |
|
867 |
866 |
868 // Java thread: |
867 // Java thread: |
869 // |
868 // |
870 // Low memory addresses |
869 // Low memory addresses |
871 // +------------------------+ |
870 // +------------------------+ |