Reviewers: Lasse Reichstein,

Description:
Have the profiler load the correct registers on x64.

This is still not correct, since internally they are kept as an int.
Use our new V8_HOST_ARCH macros for detecting the host processor.

Please review this at http://codereview.chromium.org/109025

Affected files:
   M src/platform-linux.cc


Index: src/platform-linux.cc
diff --git a/src/platform-linux.cc b/src/platform-linux.cc
index  
c735cebfcf593acce35b2427008063241be0fd1b..d9f8c9c24efe1e65d654d144cd07b1d9b56f903a
  
100644
--- a/src/platform-linux.cc
+++ b/src/platform-linux.cc
@@ -600,14 +600,18 @@ static void ProfilerSignalHandler(int signal,  
siginfo_t* info, void* context) {
      // Extracting the sample from the context is extremely machine  
dependent.
      ucontext_t* ucontext = reinterpret_cast<ucontext_t*>(context);
      mcontext_t& mcontext = ucontext->uc_mcontext;
-#if defined(__arm__) || defined(__thumb__)
-    sample.pc = mcontext.gregs[R15];
-    sample.sp = mcontext.gregs[R13];
-    sample.fp = mcontext.gregs[R11];
-#else
+#if V8_HOST_ARCH_X86
      sample.pc = mcontext.gregs[REG_EIP];
      sample.sp = mcontext.gregs[REG_ESP];
      sample.fp = mcontext.gregs[REG_EBP];
+#elif V8_HOST_ARCH_X64
+    sample.pc = mcontext.gregs[REG_RIP];
+    sample.sp = mcontext.gregs[REG_RSP];
+    sample.fp = mcontext.gregs[REG_RBP];
+#elif V8_HOST_ARCH_ARM
+    sample.pc = mcontext.gregs[R15];
+    sample.sp = mcontext.gregs[R13];
+    sample.fp = mcontext.gregs[R11];
  #endif
    }




--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to