Revision: 3122
Author: sgje...@chromium.org
Date: Fri Oct 23 05:47:44 2009
Log: Use RtlCaptureContext instead of inline assembly to capture execution  
context on Windows

Inline assembly is not available in Visual C++ 64-bit version so use  
RtlCaptureContext to capture execution context. RtlCaptureContext is not  
available on Windows 2000 so this change removes Windows 2000 support. If  
this turns up causing trouble we can revert to only use RtlCaptureContext  
in 64-bit and inline assembly in 32-bit.
Review URL: http://codereview.chromium.org/335008
http://code.google.com/p/v8/source/detail?r=3122

Modified:
  /branches/bleeding_edge/src/platform-win32.cc

=======================================
--- /branches/bleeding_edge/src/platform-win32.cc       Fri Oct 23 02:18:19 2009
+++ /branches/bleeding_edge/src/platform-win32.cc       Fri Oct 23 05:47:44 2009
@@ -48,10 +48,10 @@
  #ifndef NOMCX
  #define NOMCX
  #endif
-// Require Windows 2000 or higher (this is required for the  
IsDebuggerPresent
+// Require Windows XP or higher (this is required for the RtlCaptureContext
  // function to be present).
  #ifndef _WIN32_WINNT
-#define _WIN32_WINNT 0x500
+#define _WIN32_WINNT 0x501
  #endif

  #include <windows.h>
@@ -1208,22 +1208,7 @@

    // Capture current context.
    CONTEXT context;
-  memset(&context, 0, sizeof(context));
-  context.ContextFlags = CONTEXT_CONTROL;
-  context.ContextFlags = CONTEXT_CONTROL;
-#ifdef  _WIN64
-  // TODO(X64): Implement context capture.
-#else
-  __asm    call x
-  __asm x: pop eax
-  __asm    mov context.Eip, eax
-  __asm    mov context.Ebp, ebp
-  __asm    mov context.Esp, esp
-  // NOTE: At some point, we could use RtlCaptureContext(&context) to
-  // capture the context instead of inline assembler. However it is
-  // only available on XP, Vista, Server 2003 and Server 2008 which
-  // might not be sufficient.
-#endif
+  RtlCaptureContext(&context);

    // Initialize the stack walking
    STACKFRAME64 stack_frame;

--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to