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
|