Mercurial > hg > graal-compiler
comparison src/os/linux/vm/os_linux.cpp @ 1867:b6aedd1acdc0
6983240: guarantee((Solaris::min_stack_allowed >= (StackYellowPages+StackRedPages...) wrong
Summary: min_stack_allowed is a compile time constant and Stack*Pages are settable
Reviewed-by: dholmes, kvn
author | coleenp |
---|---|
date | Thu, 07 Oct 2010 08:06:06 -0700 |
parents | 1c352af0135d |
children | 8d88c9ac9247 f95d63e2154a |
comparison
equal
deleted
inserted
replaced
1866:644f98c78e33 | 1867:b6aedd1acdc0 |
---|---|
825 if (stack_size == 0) { | 825 if (stack_size == 0) { |
826 stack_size = os::Linux::default_stack_size(thr_type); | 826 stack_size = os::Linux::default_stack_size(thr_type); |
827 | 827 |
828 switch (thr_type) { | 828 switch (thr_type) { |
829 case os::java_thread: | 829 case os::java_thread: |
830 // Java threads use ThreadStackSize which default value can be changed with the flag -Xss | 830 // Java threads use ThreadStackSize which default value can be |
831 if (JavaThread::stack_size_at_create() > 0) stack_size = JavaThread::stack_size_at_create(); | 831 // changed with the flag -Xss |
832 assert (JavaThread::stack_size_at_create() > 0, "this should be set"); | |
833 stack_size = JavaThread::stack_size_at_create(); | |
832 break; | 834 break; |
833 case os::compiler_thread: | 835 case os::compiler_thread: |
834 if (CompilerThreadStackSize > 0) { | 836 if (CompilerThreadStackSize > 0) { |
835 stack_size = (size_t)(CompilerThreadStackSize * K); | 837 stack_size = (size_t)(CompilerThreadStackSize * K); |
836 break; | 838 break; |
3920 } | 3922 } |
3921 | 3923 |
3922 Linux::signal_sets_init(); | 3924 Linux::signal_sets_init(); |
3923 Linux::install_signal_handlers(); | 3925 Linux::install_signal_handlers(); |
3924 | 3926 |
3927 // Check minimum allowable stack size for thread creation and to initialize | |
3928 // the java system classes, including StackOverflowError - depends on page | |
3929 // size. Add a page for compiler2 recursion in main thread. | |
3930 // Add in 2*BytesPerWord times page size to account for VM stack during | |
3931 // class initialization depending on 32 or 64 bit VM. | |
3932 os::Linux::min_stack_allowed = MAX2(os::Linux::min_stack_allowed, | |
3933 (size_t)(StackYellowPages+StackRedPages+StackShadowPages+ | |
3934 2*BytesPerWord COMPILER2_PRESENT(+1)) * Linux::page_size()); | |
3935 | |
3925 size_t threadStackSizeInBytes = ThreadStackSize * K; | 3936 size_t threadStackSizeInBytes = ThreadStackSize * K; |
3926 if (threadStackSizeInBytes != 0 && | 3937 if (threadStackSizeInBytes != 0 && |
3927 threadStackSizeInBytes < Linux::min_stack_allowed) { | 3938 threadStackSizeInBytes < os::Linux::min_stack_allowed) { |
3928 tty->print_cr("\nThe stack size specified is too small, " | 3939 tty->print_cr("\nThe stack size specified is too small, " |
3929 "Specify at least %dk", | 3940 "Specify at least %dk", |
3930 Linux::min_stack_allowed / K); | 3941 os::Linux::min_stack_allowed/ K); |
3931 return JNI_ERR; | 3942 return JNI_ERR; |
3932 } | 3943 } |
3933 | 3944 |
3934 // Make the stack size a multiple of the page size so that | 3945 // Make the stack size a multiple of the page size so that |
3935 // the yellow/red zones can be guarded. | 3946 // the yellow/red zones can be guarded. |