| Index: src/platform-linux.cc
|
| ===================================================================
|
| --- src/platform-linux.cc (revision 11348)
|
| +++ src/platform-linux.cc (working copy)
|
| @@ -964,6 +964,46 @@
|
| __sigset_t uc_sigmask;
|
| } ucontext_t;
|
|
|
| +#elif !defined(__GLIBC__) && defined(__i386__)
|
| +// x86 version for Android.
|
| +struct _libc_fpreg {
|
| + uint16_t significand[4];
|
| + uint16_t exponent;
|
| +};
|
| +
|
| +struct _libc_fpstate {
|
| + uint64_t cw;
|
| + uint64_t sw;
|
| + uint64_t tag;
|
| + uint64_t ipoff;
|
| + uint64_t cssel;
|
| + uint64_t dataoff;
|
| + uint64_t datasel;
|
| + struct _libc_fpreg _st[8];
|
| + uint64_t status;
|
| +};
|
| +
|
| +typedef struct _libc_fpstate *fpregset_t;
|
| +
|
| +typedef struct mcontext {
|
| + int32_t gregs[19];
|
| + fpregset_t fpregs;
|
| + int64_t oldmask;
|
| + int64_t cr2;
|
| +} mcontext_t;
|
| +
|
| +typedef uint64_t __sigset_t;
|
| +
|
| +typedef struct ucontext {
|
| + uint64_t uc_flags;
|
| + struct ucontext *uc_link;
|
| + stack_t uc_stack;
|
| + mcontext_t uc_mcontext;
|
| + __sigset_t uc_sigmask;
|
| + struct _libc_fpstate __fpregs_mem;
|
| +} ucontext_t;
|
| +
|
| +enum { REG_EBP = 6, REG_ESP = 7, REG_EIP = 14 };
|
| #endif
|
|
|
|
|
| @@ -1055,11 +1095,8 @@
|
| vm_tgid_(getpid()),
|
| interval_(interval) {}
|
|
|
| - static void SetUp() {
|
| - if (!mutex_) {
|
| - mutex_ = OS::CreateMutex();
|
| - }
|
| - }
|
| + static void SetUp() { if (!mutex_) mutex_ = OS::CreateMutex(); }
|
| + static void TearDown() { delete mutex_; }
|
|
|
| static void InstallSignalHandler() {
|
| struct sigaction sa;
|
| @@ -1238,6 +1275,12 @@
|
| }
|
|
|
|
|
| +void OS::TearDown() {
|
| + SignalSender::TearDown();
|
| + delete limit_mutex;
|
| +}
|
| +
|
| +
|
| Sampler::Sampler(Isolate* isolate, int interval)
|
| : isolate_(isolate),
|
| interval_(interval),
|
|
|