From 71e8f8bb3c2654ba3b114f24d64a939b116f23e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Tue, 15 Jun 2021 16:28:18 +0200 Subject: [PATCH] [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} --- src/codegen/interface-descriptors-inl.h | 7 +++++++ src/codegen/interface-descriptors.h | 4 +--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/codegen/interface-descriptors-inl.h b/src/codegen/interface-descriptors-inl.h index f4146aafe732..cf4ff5b0e6bc 100644 --- a/src/codegen/interface-descriptors-inl.h +++ b/src/codegen/interface-descriptors-inl.h @@ -180,6 +180,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/src/codegen/interface-descriptors.h b/src/codegen/interface-descriptors.h index 6e664b70dd18..2e75adcf9396 100644 --- a/src/codegen/interface-descriptors.h +++ b/src/codegen/interface-descriptors.h @@ -469,10 +469,8 @@ 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); - static constexpr inline Register GetRegisterParameter(int i) { - return DerivedDescriptor::registers()[i]; - } explicit StaticCallInterfaceDescriptor(CallDescriptors::Key key) : CallInterfaceDescriptor(key) {}