Reviewers: William Hesse, Søren Gjesse,

Message:
QUick review of TickSample fix.

Description:
X64: Changed TickSample to hold pointer-sized values for registers.

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

Affected files:
   M src/log.cc
   M src/platform-linux.cc
   M src/platform-win32.cc
   M src/platform.h


Index: src/log.cc
diff --git a/src/log.cc b/src/log.cc
index  
8a2fbb7dcbd05cf4cc6519735b15717e6ba7e5c1..36488515a055d71964da5f3dcc31af707fc623da
  
100644
--- a/src/log.cc
+++ b/src/log.cc
@@ -1082,13 +1082,13 @@ void Logger::DebugEvent(const char* event_type,  
Vector<uint16_t> parameter) {
  void Logger::TickEvent(TickSample* sample, bool overflow) {
    if (!Log::is_enabled() || !FLAG_prof) return;
    LogMessageBuilder msg;
-  msg.Append("tick,0x%x,0x%x,%d", sample->pc, sample->sp,
+  msg.Append("tick,0x%p,0x%p,%d", sample->pc, sample->sp,
               static_cast<int>(sample->state));
    if (overflow) {
      msg.Append(",overflow");
    }
    for (int i = 0; i < sample->frames_count; ++i) {
-    msg.Append(",0x%x", reinterpret_cast<uint32_t>(sample->stack[i]));
+    msg.Append(",0x%p", reinterpret_cast<uint32_t>(sample->stack[i]));
    }
    msg.Append('\n');
    msg.WriteToLogFile();
Index: src/platform-linux.cc
diff --git a/src/platform-linux.cc b/src/platform-linux.cc
index  
026d251f5c339c5e5c8b2a29cc2403597d43e7d4..c02eebc3b4c8a4e8e7beadd4037f856b91bbc729
  
100644
--- a/src/platform-linux.cc
+++ b/src/platform-linux.cc
@@ -605,7 +605,6 @@ static void ProfilerSignalHandler(int signal,  
siginfo_t* info, void* context) {
      sample.sp = mcontext.gregs[REG_ESP];
      sample.fp = mcontext.gregs[REG_EBP];
  #elif V8_HOST_ARCH_X64
-    UNIMPLEMENTED();
      sample.pc = mcontext.gregs[REG_RIP];
      sample.sp = mcontext.gregs[REG_RSP];
      sample.fp = mcontext.gregs[REG_RBP];
Index: src/platform-win32.cc
diff --git a/src/platform-win32.cc b/src/platform-win32.cc
index  
597a21716b2b655e4962b7b55b6ccb76d57ecc15..eeaea700f0a6a50106bce0227bda0cce273b92b6
  
100644
--- a/src/platform-win32.cc
+++ b/src/platform-win32.cc
@@ -1775,9 +1775,16 @@ class Sampler::PlatformData : public Malloced {
          context.ContextFlags = CONTEXT_FULL;
          GetThreadContext(profiled_thread_, &context);
          // Invoke tick handler with program counter and stack pointer.
+#if V8_HOST_ARCH_64_BIT
+        UNIMPLEMENTED();
+        sample.pc = context.Rip;
+        sample.sp = context.Rsp;
+        sample.fp = context.Rbp;
+#else
          sample.pc = context.Eip;
          sample.sp = context.Esp;
          sample.fp = context.Ebp;
+#endif
        }

        // We always sample the VM state.
Index: src/platform.h
diff --git a/src/platform.h b/src/platform.h
index  
a34661505564665407a814a43287b7309605707b..e23abfc375de08380991ea1dee918b45298f3bf2
  
100644
--- a/src/platform.h
+++ b/src/platform.h
@@ -492,9 +492,9 @@ class Socket {
  class TickSample {
   public:
    TickSample() : pc(0), sp(0), fp(0), state(OTHER) {}
-  unsigned int pc;  // Instruction pointer.
-  unsigned int sp;  // Stack pointer.
-  unsigned int fp;  // Frame pointer.
+  uintptr_t pc;  // Instruction pointer.
+  uintptr_t sp;  // Stack pointer.
+  uintptr_t fp;  // Frame pointer.
    StateTag state;   // The state of the VM.
    static const int kMaxFramesCount = 100;
    EmbeddedVector<Address, kMaxFramesCount> stack;  // Call stack.



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

Reply via email to