diff --git a/common.gypi b/common.gypi index a8dbd9ba13e..f8588b82311 100644 --- a/common.gypi +++ b/common.gypi @@ -50,7 +50,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.10', + 'v8_embedder_string': '-node.11', ##### V8 defaults for Node.js ##### @@ -588,6 +588,13 @@ '_HAS_EXCEPTIONS=0', 'BUILDING_V8_SHARED=1', 'BUILDING_UV_SHARED=1', + # Node.js is built with clang-cl but native addons may be built + # with MSVC, which does not support preserve_most. + # As preserve_most changes the mangled name of a function in the + # Microsoft C++ ABI, the addons would fail to link against the + # exported symbols. So this define must be consistely set for + # both the V8 build and addon builds. + 'V8_DISABLE_PRESERVE_MOST', # Stop from defining macros that conflict with # std::min() and std::max(). We don't use (much) # but we still inherit it from uv.h. diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h index 79bb264d2c9..3063b20885c 100644 --- a/deps/v8/include/v8config.h +++ b/deps/v8/include/v8config.h @@ -402,6 +402,7 @@ path. Add it with -I to the command line || ((defined(__AARCH64EL__) || defined(_M_ARM64)) /* arm64, but ... */ \ && !defined(_WIN32))) /* not on windows */ \ && !defined(COMPONENT_BUILD) /* no component build */\ + && !defined(V8_DISABLE_PRESERVE_MOST) /* embedder opt-out */ \ && __clang_major__ >= 17 /* clang >= 17 */ # define V8_HAS_ATTRIBUTE_PRESERVE_MOST (__has_attribute(preserve_most)) #endif @@ -609,15 +610,11 @@ path. Add it with -I to the command line // functions. // Use like: // V8_NOINLINE V8_PRESERVE_MOST void UnlikelyMethod(); -#if V8_CC_MSVC -# define V8_PRESERVE_MOST -#else #if V8_HAS_ATTRIBUTE_PRESERVE_MOST # define V8_PRESERVE_MOST __attribute__((preserve_most)) #else # define V8_PRESERVE_MOST /* NOT SUPPORTED */ #endif -#endif // A macro (V8_DEPRECATED) to mark classes or functions as deprecated.