From 794ad2e016d9475af64fdfd6286aa0bf12b5b5d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Wed, 16 Jun 2021 12:07:41 +0200 Subject: [PATCH] deps: V8: backport 71e8f8bb3c26 Original commit message: [codegen] Move definition of GetRegisterParameter to inline header This fixes compilation of V8 in Node.js with Visual Studio 2019. Without this change, MSVC errors with C3779 (a function that returns 'auto' cannot be used before it is defined) on the `static constexpr auto registers()` method. Bug: v8:11420 Change-Id: Id545199e2cdc10c8560031fb5950ec1171e5d554 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2964095 Commit-Queue: Igor Sheludko Reviewed-by: Igor Sheludko Cr-Commit-Position: refs/heads/master@{#75173} Refs: https://github.com/v8/v8/commit/71e8f8bb3c2654ba3b114f24d64a939b116f23e1 Backport-PR-URL: https://github.com/nodejs/node/pull/39470 PR-URL: https://github.com/nodejs/node/pull/38990 Reviewed-By: Jiawen Geng Reviewed-By: Matteo Collina Reviewed-By: Robert Nagy Reviewed-By: Colin Ihrig --- common.gypi | 2 +- deps/v8/src/codegen/interface-descriptors-inl.h | 7 +++++++ deps/v8/src/codegen/interface-descriptors.h | 5 +---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/common.gypi b/common.gypi index 88f37a7bec4cfc..ef9d5543206fd2 100644 --- a/common.gypi +++ b/common.gypi @@ -36,7 +36,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.8', + 'v8_embedder_string': '-node.9', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/src/codegen/interface-descriptors-inl.h b/deps/v8/src/codegen/interface-descriptors-inl.h index 273e9d3e8e0993..1b06aab68cb31c 100644 --- a/deps/v8/src/codegen/interface-descriptors-inl.h +++ b/deps/v8/src/codegen/interface-descriptors-inl.h @@ -176,6 +176,13 @@ StaticCallInterfaceDescriptor::GetStackParameterCount() { DerivedDescriptor::GetRegisterParameterCount(); } +// static +template +constexpr Register +StaticCallInterfaceDescriptor::GetRegisterParameter(int i) { + return DerivedDescriptor::registers()[i]; +} + // static constexpr Register FastNewObjectDescriptor::TargetRegister() { return kJSFunctionRegister; diff --git a/deps/v8/src/codegen/interface-descriptors.h b/deps/v8/src/codegen/interface-descriptors.h index e64826e6fc1a36..9a526370ca9b34 100644 --- a/deps/v8/src/codegen/interface-descriptors.h +++ b/deps/v8/src/codegen/interface-descriptors.h @@ -457,10 +457,7 @@ class StaticCallInterfaceDescriptor : public CallInterfaceDescriptor { static constexpr inline int GetRegisterParameterCount(); static constexpr inline int GetStackParameterCount(); static constexpr inline Register* GetRegisterData(); - - static constexpr inline Register GetRegisterParameter(int i) { - return DerivedDescriptor::registers()[i]; - } + static constexpr inline Register GetRegisterParameter(int i); explicit StaticCallInterfaceDescriptor(CallDescriptors::Key key) : CallInterfaceDescriptor(key) {}