784 bool os::is_allocatable(size_t bytes) { 785 #ifdef AMD64 786 // unused on amd64? 787 return true; 788 #else 789 790 if (bytes < 2 * G) { 791 return true; 792 } 793 794 char* addr = reserve_memory(bytes, NULL); 795 796 if (addr != NULL) { 797 release_memory(addr, bytes); 798 } 799 800 return addr != NULL; 801 #endif // AMD64 802 } 803 804 //////////////////////////////////////////////////////////////////////////////// 805 // thread stack 806 807 // Minimum usable stack sizes required to get to user code. Space for 808 // HotSpot guard pages is added later. 809 size_t os::Posix::_compiler_thread_min_stack_allowed = 48 * K; 810 size_t os::Posix::_java_thread_min_stack_allowed = 48 * K; 811 #ifdef _LP64 812 size_t os::Posix::_vm_internal_thread_min_stack_allowed = 64 * K; 813 #else 814 size_t os::Posix::_vm_internal_thread_min_stack_allowed = (48 DEBUG_ONLY(+ 4)) * K; 815 #endif // _LP64 816 817 #ifndef AMD64 818 #ifdef __GNUC__ 819 #define GET_GS() ({int gs; __asm__ volatile("movw %%gs, %w0":"=q"(gs)); gs&0xffff;}) 820 #endif 821 #endif // AMD64 822 823 // return default stack size for thr_type | 784 bool os::is_allocatable(size_t bytes) { 785 #ifdef AMD64 786 // unused on amd64? 787 return true; 788 #else 789 790 if (bytes < 2 * G) { 791 return true; 792 } 793 794 char* addr = reserve_memory(bytes, NULL); 795 796 if (addr != NULL) { 797 release_memory(addr, bytes); 798 } 799 800 return addr != NULL; 801 #endif // AMD64 802 } 803 804 juint os::cpu_microcode_revision() { 805 juint result = 0; 806 char data[8]; 807 size_t sz = sizeof(data); 808 int ret = sysctlbyname("machdep.cpu.microcode_version", data, &sz, NULL, 0); 809 if (ret == 0) { 810 if (sz == 4) result = *((juint*)data); 811 if (sz == 8) result = *((juint*)data + 1); // upper 32-bits 812 } 813 return result; 814 } 815 816 //////////////////////////////////////////////////////////////////////////////// 817 // thread stack 818 819 // Minimum usable stack sizes required to get to user code. Space for 820 // HotSpot guard pages is added later. 821 size_t os::Posix::_compiler_thread_min_stack_allowed = 48 * K; 822 size_t os::Posix::_java_thread_min_stack_allowed = 48 * K; 823 #ifdef _LP64 824 size_t os::Posix::_vm_internal_thread_min_stack_allowed = 64 * K; 825 #else 826 size_t os::Posix::_vm_internal_thread_min_stack_allowed = (48 DEBUG_ONLY(+ 4)) * K; 827 #endif // _LP64 828 829 #ifndef AMD64 830 #ifdef __GNUC__ 831 #define GET_GS() ({int gs; __asm__ volatile("movw %%gs, %w0":"=q"(gs)); gs&0xffff;}) 832 #endif 833 #endif // AMD64 834 835 // return default stack size for thr_type |