Sample correct registers on solaris.
Landing patch by Ryan Dahl. TBR=vegorov@chromium.org Original review: http://codereview.chromium.org/6676019/ Review URL: http://codereview.chromium.org/6665023 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7141 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
7b5b511d1a
commit
d3caca74ca
@ -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…
Reference in New Issue
Block a user