Mercurial > hg > graal-compiler
diff src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp @ 3798:65dba8692db7
7061197: ThreadLocalStorage sp map table should be optional
Reviewed-by: dholmes, never, jwilhelm, kvn
author | jcoomes |
---|---|
date | Wed, 06 Jul 2011 12:22:29 -0700 |
parents | f95d63e2154a |
children |
line wrap: on
line diff
--- a/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp Wed Jul 06 12:17:44 2011 -0700 +++ b/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp Wed Jul 06 12:22:29 2011 -0700 @@ -27,28 +27,32 @@ // Processor dependent parts of ThreadLocalStorage -#ifndef AMD64 +#if !defined(AMD64) && !defined(MINIMIZE_RAM_USAGE) + // map stack pointer to thread pointer - see notes in threadLS_linux_x86.cpp #define SP_BITLENGTH 32 #define PAGE_SHIFT 12 #define PAGE_SIZE (1UL << PAGE_SHIFT) static Thread* _sp_map[1UL << (SP_BITLENGTH - PAGE_SHIFT)]; -#endif // !AMD64 public: -#ifndef AMD64 static Thread** sp_map_addr() { return _sp_map; } -#endif // !AMD64 static Thread* thread() { -#ifdef AMD64 - return (Thread*) os::thread_local_storage_at(thread_index()); -#else uintptr_t sp; __asm__ volatile ("movl %%esp, %0" : "=r" (sp)); return _sp_map[sp >> PAGE_SHIFT]; -#endif // AMD64 } +#else + +public: + + static Thread* thread() { + return (Thread*) os::thread_local_storage_at(thread_index()); + } + +#endif // AMD64 || MINIMIZE_RAM_USAGE + #endif // OS_CPU_LINUX_X86_VM_THREADLS_LINUX_X86_HPP