Roll out r75289
authoraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 Jan 2011 20:13:38 +0000 (20:13 +0000)
committeraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 Jan 2011 20:13:38 +0000 (20:13 +0000)
It was causing assertion failures. See <http://webkit.org/b/52156>.

* wtf/StackBounds.cpp:
(WTF::StackBounds::initialize):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@75405 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/wtf/StackBounds.cpp

index 41426f106484833ddd66e1aa9a8b525f3a612de3..fddc05b12263f1df32d659a9d562974b50b30b4b 100644 (file)
@@ -1,3 +1,12 @@
+2011-01-10  Adam Roben  <aroben@apple.com>
+
+        Roll out r75289
+
+        It was causing assertion failures. See <http://webkit.org/b/52156>.
+
+        * wtf/StackBounds.cpp:
+        (WTF::StackBounds::initialize):
+
 2011-01-08  Patrick Gansterer  <paroga@webkit.org>
 
         Reviewed by Darin Adler.
index f83695e41557a43e551bffc483801df415bb82d3..be8ce8411382620404f2509a4c099e01b447144e 100644 (file)
@@ -60,12 +60,12 @@ namespace WTF {
 // Bug 26276 - Need a mechanism to determine stack extent
 //
 // These platforms should now be working correctly:
-//     DARWIN, WINDOWS-CPU(X86), QNX, UNIX, WINCE
+//     DARWIN, QNX, UNIX
 // These platforms are not:
-//     WINDOWS-CPU(X86_64), SOLARIS, OPENBSD, SYMBIAN, HAIKU
+//     WINDOWS, SOLARIS, OPENBSD, SYMBIAN, HAIKU, WINCE
 //
 // FIXME: remove this! - this code unsafely guesses at stack sizes!
-#if (OS(WINDOWS) && CPU(X86_64)) || OS(SOLARIS) || OS(OPENBSD) || OS(SYMBIAN) || OS(HAIKU)
+#if OS(WINDOWS) || OS(SOLARIS) || OS(OPENBSD) || OS(SYMBIAN) || OS(HAIKU)
 // Based on the current limit used by the JSC parser, guess the stack size.
 static const ptrdiff_t estimatedStackSize = 128 * sizeof(void*) * 1024;
 // This method assumes the stack is growing downwards.
@@ -247,37 +247,39 @@ void StackBounds::initialize()
     m_bound = isGrowingDownward ? lowerStackBound : upperStackBound;
 }
 
-#elif OS(WINDOWS) && (CPU(X86) || CPU(X86_64))
+#elif OS(WINDOWS)
 
 void StackBounds::initialize()
 {
-#if CPU(X86)
-    // Offset 0x18 from the FS segment register gives a pointer to
-    // the thread information block for the current thread.
+#if CPU(X86) && COMPILER(MSVC)
+    // offset 0x18 from the FS segment register gives a pointer to
+    // the thread information block for the current thread
     NT_TIB* pTib;
-#if COMPILER(MSVC)
     __asm {
         MOV EAX, FS:[18h]
         MOV pTib, EAX
     }
-#else
+    m_origin = static_cast<void*>(pTib->StackBase);
+#elif CPU(X86) && COMPILER(GCC)
+    // offset 0x18 from the FS segment register gives a pointer to
+    // the thread information block for the current thread
+    NT_TIB* pTib;
     asm ( "movl %%fs:0x18, %0\n"
           : "=r" (pTib)
         );
-#endif
-    // See http://en.wikipedia.org/wiki/Win32_Thread_Information_Block for more information!
-    void* pDeallocationStack = reinterpret_cast<char*>(pTib) + 0xE0C;
     m_origin = static_cast<void*>(pTib->StackBase);
-    m_bound = *static_cast<void**>(pDeallocationStack);
 #elif CPU(X86_64)
     PNT_TIB64 pTib = reinterpret_cast<PNT_TIB64>(NtCurrentTeb());
     m_origin = reinterpret_cast<void*>(pTib->StackBase);
-    m_bound = estimateStackBound(m_origin);
+#else
+#error Need a way to get the stack bounds on this platform (Windows)
 #endif
+    // Looks like we should be able to get pTib->StackLimit
+    m_bound = estimateStackBound(m_origin);
 }
 
 #else
-#error Need a way to get the stack bounds on this platform.
+#error Need a way to get the stack bounds on this platform
 #endif
 
 } // namespace WTF