| Index: src/platform.h
 | 
| diff --git a/src/platform.h b/src/platform.h
 | 
| index 211be39d00c781b7075250d0e149e2b8dcc676e0..8b27c19a65f45d92cb8fdf2f52f0adad14715865 100644
 | 
| --- a/src/platform.h
 | 
| +++ b/src/platform.h
 | 
| @@ -69,6 +69,7 @@ int signbit(double x);
 | 
|  // Microsoft Visual C++ specific stuff.
 | 
|  #ifdef _MSC_VER
 | 
|  
 | 
| +#include "win32-headers.h"
 | 
|  #include "win32-math.h"
 | 
|  
 | 
|  int strncasecmp(const char* s1, const char* s2, int n);
 | 
| @@ -90,7 +91,6 @@ inline int lrint(double flt) {
 | 
|    return intgr;
 | 
|  }
 | 
|  
 | 
| -
 | 
|  #endif  // _MSC_VER
 | 
|  
 | 
|  #ifndef __CYGWIN__
 | 
| @@ -101,7 +101,6 @@ int random();
 | 
|  #endif  // WIN32
 | 
|  
 | 
|  #include "lazy-instance.h"
 | 
| -#include "platform-tls.h"
 | 
|  #include "utils.h"
 | 
|  #include "v8globals.h"
 | 
|  
 | 
| @@ -129,6 +128,60 @@ void lazily_initialize_fast_exp();
 | 
|  class Socket;
 | 
|  
 | 
|  // ----------------------------------------------------------------------------
 | 
| +// Fast TLS support
 | 
| +
 | 
| +#ifndef V8_NO_FAST_TLS
 | 
| +
 | 
| +#if defined(_MSC_VER) && V8_HOST_ARCH_IA32
 | 
| +
 | 
| +#define V8_FAST_TLS_SUPPORTED 1
 | 
| +
 | 
| +INLINE(intptr_t InternalGetExistingThreadLocal(intptr_t index));
 | 
| +
 | 
| +inline intptr_t InternalGetExistingThreadLocal(intptr_t index) {
 | 
| +  const intptr_t kTibInlineTlsOffset = 0xE10;
 | 
| +  const intptr_t kTibExtraTlsOffset = 0xF94;
 | 
| +  const intptr_t kMaxInlineSlots = 64;
 | 
| +  const intptr_t kMaxSlots = kMaxInlineSlots + 1024;
 | 
| +  ASSERT(0 <= index && index < kMaxSlots);
 | 
| +  if (index < kMaxInlineSlots) {
 | 
| +    return static_cast<intptr_t>(__readfsdword(kTibInlineTlsOffset +
 | 
| +                                               kPointerSize * index));
 | 
| +  }
 | 
| +  intptr_t extra = static_cast<intptr_t>(__readfsdword(kTibExtraTlsOffset));
 | 
| +  ASSERT(extra != 0);
 | 
| +  return *reinterpret_cast<intptr_t*>(extra +
 | 
| +                                      kPointerSize * (index - kMaxInlineSlots));
 | 
| +}
 | 
| +
 | 
| +#elif defined(__APPLE__) && (V8_HOST_ARCH_IA32 || V8_HOST_ARCH_X64)
 | 
| +
 | 
| +#define V8_FAST_TLS_SUPPORTED 1
 | 
| +
 | 
| +extern intptr_t kMacTlsBaseOffset;
 | 
| +
 | 
| +INLINE(intptr_t InternalGetExistingThreadLocal(intptr_t index));
 | 
| +
 | 
| +inline intptr_t InternalGetExistingThreadLocal(intptr_t index) {
 | 
| +  intptr_t result;
 | 
| +#if V8_HOST_ARCH_IA32
 | 
| +  asm("movl %%gs:(%1,%2,4), %0;"
 | 
| +      :"=r"(result)  // Output must be a writable register.
 | 
| +      :"r"(kMacTlsBaseOffset), "r"(index));
 | 
| +#else
 | 
| +  asm("movq %%gs:(%1,%2,8), %0;"
 | 
| +      :"=r"(result)
 | 
| +      :"r"(kMacTlsBaseOffset), "r"(index));
 | 
| +#endif
 | 
| +  return result;
 | 
| +}
 | 
| +
 | 
| +#endif
 | 
| +
 | 
| +#endif  // V8_NO_FAST_TLS
 | 
| +
 | 
| +
 | 
| +// ----------------------------------------------------------------------------
 | 
|  // OS
 | 
|  //
 | 
|  // This class has static methods for the different platform specific
 | 
| 
 |