Browse Source

Sample correct registers on Solaris

http://codereview.chromium.org/6676019/
v0.7.4-release
Ryan Dahl 14 years ago
parent
commit
6802c90d1f
  1. 17
      deps/v8/src/platform-solaris.cc

17
deps/v8/src/platform-solaris.cc

@ -45,7 +45,7 @@
#include <errno.h>
#include <ieeefp.h> // finite()
#include <signal.h> // sigemptyset(), etc
#include <sys/kdi_regs.h>
#include <sys/regset.h>
#undef MAP_TYPE
@ -632,17 +632,10 @@ static void ProfilerSignalHandler(int signal, siginfo_t* info, void* context) {
mcontext_t& mcontext = ucontext->uc_mcontext;
sample->state = Top::current_vm_state();
#if V8_HOST_ARCH_IA32
sample->pc = reinterpret_cast<Address>(mcontext.gregs[KDIREG_EIP]);
sample->sp = reinterpret_cast<Address>(mcontext.gregs[KDIREG_ESP]);
sample->fp = reinterpret_cast<Address>(mcontext.gregs[KDIREG_EBP]);
#elif V8_HOST_ARCH_X64
sample->pc = reinterpret_cast<Address>(mcontext.gregs[KDIREG_RIP]);
sample->sp = reinterpret_cast<Address>(mcontext.gregs[KDIREG_RSP]);
sample->fp = reinterpret_cast<Address>(mcontext.gregs[KDIREG_RBP]);
#else
UNIMPLEMENTED();
#endif
sample->pc = reinterpret_cast<Address>(mcontext.gregs[REG_PC]);
sample->sp = reinterpret_cast<Address>(mcontext.gregs[REG_SP]);
sample->fp = reinterpret_cast<Address>(mcontext.gregs[REG_FP]);
active_sampler_->SampleStack(sample);
active_sampler_->Tick(sample);
}

Loading…
Cancel
Save