From 46dc37e3488f42c289fc17bbf1cd538bdab3fe00 Mon Sep 17 00:00:00 2001 From: Julien Gilli Date: Thu, 9 Oct 2014 13:01:27 -0700 Subject: [PATCH] build: fix build for SmartOS This change in V8: https://code.google.com/p/v8/source/detail?r=22210 has introduced a method named OS::GetCurrentThreadId which fails to compile on OSes where a "gettid" syscall does not exist. This build issue has been fixed upstream by several changes: - https://code.google.com/p/v8/source/detail?r=23459. - https://codereview.chromium.org/649553002 - https://codereview.chromium.org/642223003 Another minor fix to the upstream changes was also necessary. See https://code.google.com/p/v8/issues/detail?id=3620 for more information. The other build issue was due to the fact that alloca.h is not included by other system includes on SmartOS, which is assumed by V8. Built and tested on Linux, MacOS X, Windows and SmartOS. --- deps/v8/src/base/platform/platform-posix.cc | 10 +++++++--- deps/v8/src/base/platform/platform.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/deps/v8/src/base/platform/platform-posix.cc b/deps/v8/src/base/platform/platform-posix.cc index 252d2137552..771634e24e9 100644 --- a/deps/v8/src/base/platform/platform-posix.cc +++ b/deps/v8/src/base/platform/platform-posix.cc @@ -321,11 +321,15 @@ int OS::GetCurrentProcessId() { int OS::GetCurrentThreadId() { -#if defined(ANDROID) +#if V8_OS_MACOSX + return static_cast(pthread_mach_thread_np(pthread_self())); +#elif V8_OS_LINUX return static_cast(syscall(__NR_gettid)); +#elif V8_OS_ANDROID + return static_cast(gettid()); #else - return static_cast(syscall(SYS_gettid)); -#endif // defined(ANDROID) + return static_cast(pthread_self()); +#endif } diff --git a/deps/v8/src/base/platform/platform.h b/deps/v8/src/base/platform/platform.h index 8a541262685..9567572d800 100644 --- a/deps/v8/src/base/platform/platform.h +++ b/deps/v8/src/base/platform/platform.h @@ -35,6 +35,7 @@ namespace std { int signbit(double x); } # endif +#include #endif #if V8_OS_QNX