src/os/linux/vm/os_linux.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/os/linux/vm/os_linux.cpp	Fri Nov 30 11:57:57 2012
--- new/src/os/linux/vm/os_linux.cpp	Fri Nov 30 11:57:56 2012

*** 1172,1188 **** --- 1172,1184 ---- // 4466587: glibc 2.2.x compiled w/o "--enable-kernel=2.4.0" (RH 7.0, // SuSE 7.2, Debian) can not handle alternate signal stack correctly // for initial thread if its stack size exceeds 6M. Cap it at 2M, // in case other parts in glibc still assumes 2M max stack size. // FIXME: alt signal stack is gone, maybe we can relax this constraint? #ifndef IA64 if (stack_size > 2 * K * K) stack_size = 2 * K * K; #else // Problem still exists RH7.2 (IA64 anyway) but 2MB is a little small ! if (stack_size > 4 * K * K) stack_size = 4 * K * K; #endif ! if (stack_size > 2 * K * K IA64_ONLY(*2)) + stack_size = 2 * K * K IA64_ONLY(*2); // Try to figure out where the stack base (top) is. This is harder. // // When an application is started, glibc saves the initial stack pointer in // a global variable "__libc_stack_end", which is then used by system // libraries. __libc_stack_end should be pretty close to stack top. The
*** 4387,4406 **** --- 4383,4398 ---- int os::Linux::safe_cond_timedwait(pthread_cond_t *_cond, pthread_mutex_t *_mutex, const struct timespec *_abstime) { if (is_NPTL()) { return pthread_cond_timedwait(_cond, _mutex, _abstime); } else { #ifndef IA64 // 6292965: LinuxThreads pthread_cond_timedwait() resets FPU control // word back to default 64bit precision if condvar is signaled. Java // wants 53bit precision. Save and restore current value. int fpu = get_fpu_control_word(); #endif // IA64 int status = pthread_cond_timedwait(_cond, _mutex, _abstime); #ifndef IA64 set_fpu_control_word(fpu); #endif // IA64 return status; } } ////////////////////////////////////////////////////////////////////////////////

src/os/linux/vm/os_linux.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File