Index: src/sampler.cc |
diff --git a/src/sampler.cc b/src/sampler.cc |
index d10a5392204214ba6317d8a6b2a494922ef89458..d72ed1acdb832e224c490b736954bf6d908ebb88 100644 |
--- a/src/sampler.cc |
+++ b/src/sampler.cc |
@@ -27,11 +27,9 @@ |
#include "sampler.h" |
-#if V8_OS_DARWIN |
- |
-#include <mach/mach.h> |
- |
-#elif V8_OS_UNIX && !V8_OS_CYGWIN |
+#if defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__) \ |
+ || defined(__NetBSD__) || defined(__sun) || defined(__ANDROID__) \ |
+ || defined(__native_client__) |
#define USE_SIGNALS |
@@ -40,19 +38,23 @@ |
#include <signal.h> |
#include <sys/time.h> |
#include <sys/syscall.h> |
-#if !V8_OS_ANDROID || defined(__BIONIC_HAVE_UCONTEXT_T) |
+#if !defined(__ANDROID__) || defined(__BIONIC_HAVE_UCONTEXT_T) |
#include <ucontext.h> |
#endif |
#include <unistd.h> |
// GLibc on ARM defines mcontext_t has a typedef for 'struct sigcontext'. |
// Old versions of the C library <signal.h> didn't define the type. |
-#if V8_OS_ANDROID && !defined(__BIONIC_HAVE_UCONTEXT_T) && \ |
- V8_HOST_ARCH_ARM && !defined(__BIONIC_HAVE_STRUCT_SIGCONTEXT) |
+#if defined(__ANDROID__) && !defined(__BIONIC_HAVE_UCONTEXT_T) && \ |
+ defined(__arm__) && !defined(__BIONIC_HAVE_STRUCT_SIGCONTEXT) |
#include <asm/sigcontext.h> |
#endif |
-#elif V8_OS_CYGWIN || V8_OS_WIN32 |
+#elif defined(__MACH__) |
+ |
+#include <mach/mach.h> |
+ |
+#elif defined(_WIN32) || defined(_WIN64) || defined(__CYGWIN__) |
#include "win32-headers.h" |
@@ -70,7 +72,7 @@ |
#include "vm-state-inl.h" |
-#if V8_OS_ANDROID && !defined(__BIONIC_HAVE_UCONTEXT_T) |
+#if defined(__ANDROID__) && !defined(__BIONIC_HAVE_UCONTEXT_T) |
// Not all versions of Android's C library provide ucontext_t. |
// Detect this and provide custom but compatible definitions. Note that these |
@@ -79,7 +81,7 @@ |
// |
// See http://code.google.com/p/android/issues/detail?id=34784 |
-#if V8_HOST_ARCH_ARM |
+#if defined(__arm__) |
typedef struct sigcontext mcontext_t; |
@@ -91,7 +93,7 @@ typedef struct ucontext { |
// Other fields are not used by V8, don't define them here. |
} ucontext_t; |
-#elif V8_HOST_ARCH_MIPS |
+#elif defined(__mips__) |
// MIPS version of sigcontext, for Android bionic. |
typedef struct { |
uint32_t regmask; |
@@ -122,7 +124,7 @@ typedef struct ucontext { |
// Other fields are not used by V8, don't define them here. |
} ucontext_t; |
-#elif V8_HOST_ARCH_IA32 |
+#elif defined(__i386__) |
// x86 version for Android. |
typedef struct { |
uint32_t gregs[19]; |
@@ -142,7 +144,7 @@ typedef struct ucontext { |
enum { REG_EBP = 6, REG_ESP = 7, REG_EIP = 14 }; |
#endif |
-#endif // V8_OS_ANDROID && !defined(__BIONIC_HAVE_UCONTEXT_T) |
+#endif // __ANDROID__ && !defined(__BIONIC_HAVE_UCONTEXT_T) |
namespace v8 { |
@@ -175,7 +177,7 @@ class Sampler::PlatformData : public PlatformDataCommon { |
pthread_t vm_tid_; |
}; |
-#elif V8_OS_DARWIN |
+#elif defined(__MACH__) |
class Sampler::PlatformData : public PlatformDataCommon { |
public: |
@@ -195,7 +197,7 @@ class Sampler::PlatformData : public PlatformDataCommon { |
thread_act_t profiled_thread_; |
}; |
-#elif V8_OS_CYGWIN || V8_OS_WIN32 |
+#elif defined(_WIN32) || defined(_WIN64) || defined(__CYGWIN__) |
// ---------------------------------------------------------------------------- |
// Win32 profiler support. On Cygwin we use the same sampler implementation as |
@@ -299,7 +301,7 @@ bool SignalHandler::signal_handler_installed_ = false; |
void SignalHandler::HandleProfilerSignal(int signal, siginfo_t* info, |
void* context) { |
-#if V8_OS_NACL |
+#if defined(__native_client__) |
// As Native Client does not support signal handling, profiling |
// is disabled. |
return; |
@@ -329,7 +331,7 @@ void SignalHandler::HandleProfilerSignal(int signal, siginfo_t* info, |
// 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 V8_OS_LINUX |
+#if defined(__linux__) || defined(__ANDROID__) |
#if V8_HOST_ARCH_IA32 |
state.pc = reinterpret_cast<Address>(mcontext.gregs[REG_EIP]); |
state.sp = reinterpret_cast<Address>(mcontext.gregs[REG_ESP]); |
@@ -357,7 +359,7 @@ void SignalHandler::HandleProfilerSignal(int signal, siginfo_t* info, |
state.sp = reinterpret_cast<Address>(mcontext.gregs[29]); |
state.fp = reinterpret_cast<Address>(mcontext.gregs[30]); |
#endif // V8_HOST_ARCH_* |
-#elif V8_OS_FREEBSD |
+#elif defined(__FreeBSD__) |
#if V8_HOST_ARCH_IA32 |
state.pc = reinterpret_cast<Address>(mcontext.mc_eip); |
state.sp = reinterpret_cast<Address>(mcontext.mc_esp); |
@@ -371,7 +373,7 @@ void SignalHandler::HandleProfilerSignal(int signal, siginfo_t* info, |
state.sp = reinterpret_cast<Address>(mcontext.mc_r13); |
state.fp = reinterpret_cast<Address>(mcontext.mc_r11); |
#endif // V8_HOST_ARCH_* |
-#elif V8_OS_NETBSD |
+#elif defined(__NetBSD__) |
#if V8_HOST_ARCH_IA32 |
state.pc = reinterpret_cast<Address>(mcontext.__gregs[_REG_EIP]); |
state.sp = reinterpret_cast<Address>(mcontext.__gregs[_REG_ESP]); |
@@ -381,7 +383,7 @@ void SignalHandler::HandleProfilerSignal(int signal, siginfo_t* info, |
state.sp = reinterpret_cast<Address>(mcontext.__gregs[_REG_RSP]); |
state.fp = reinterpret_cast<Address>(mcontext.__gregs[_REG_RBP]); |
#endif // V8_HOST_ARCH_* |
-#elif V8_OS_OPENBSD |
+#elif defined(__OpenBSD__) |
USE(mcontext); |
#if V8_HOST_ARCH_IA32 |
state.pc = reinterpret_cast<Address>(ucontext->sc_eip); |
@@ -392,11 +394,11 @@ void SignalHandler::HandleProfilerSignal(int signal, siginfo_t* info, |
state.sp = reinterpret_cast<Address>(ucontext->sc_rsp); |
state.fp = reinterpret_cast<Address>(ucontext->sc_rbp); |
#endif // V8_HOST_ARCH_* |
-#elif V8_OS_SOLARIS |
+#elif defined(__sun) |
state.pc = reinterpret_cast<Address>(mcontext.gregs[REG_PC]); |
state.sp = reinterpret_cast<Address>(mcontext.gregs[REG_SP]); |
state.fp = reinterpret_cast<Address>(mcontext.gregs[REG_FP]); |
-#endif // V8_OS_SOLARIS |
+#endif // __sun |
#endif // USE_SIMULATOR |
sampler->SampleStack(state); |
#endif // __native_client__ |
@@ -491,7 +493,7 @@ class SamplerThread : public Thread { |
pthread_kill(tid, SIGPROF); |
} |
-#elif V8_OS_DARWIN |
+#elif defined(__MACH__) |
void SampleContext(Sampler* sampler) { |
thread_act_t profiled_thread = sampler->platform_data()->profiled_thread(); |
@@ -544,7 +546,7 @@ class SamplerThread : public Thread { |
thread_resume(profiled_thread); |
} |
-#elif V8_OS_CYGWIN || V8_OS_WIN32 |
+#elif defined(_WIN32) || defined(_WIN64) || defined(__CYGWIN__) |
void SampleContext(Sampler* sampler) { |
HANDLE profiled_thread = sampler->platform_data()->profiled_thread(); |