Skip to content

Commit

Permalink
deps: V8: cherry-pick d1d4c648e7ff
Browse files Browse the repository at this point in the history
Original commit message:

    Disable cross-compilation of clobber-registers.cc

    This file uses inline assembly, but inline assembly does not work
    for cross-compilation. As this file only contains debug code, no-oping
    this file for cross-compilation seems acceptable.

    R=ishell@chromium.org

    Bug: v8:12926
    Change-Id: I01276cf019e8c31e4db6f7f61a3d91526f660578
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3735165
    Commit-Queue: Andreas Haas <ahaas@chromium.org>
    Reviewed-by: Igor Sheludko <ishell@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#81466}

Refs: v8/v8@d1d4c64
PR-URL: #46098
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Richard Lau <rlau@redhat.com>
  • Loading branch information
danielleadams committed Jan 5, 2023
1 parent bac6b7d commit c4f665f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 16 deletions.
2 changes: 1 addition & 1 deletion common.gypi
Expand Up @@ -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.20',
'v8_embedder_string': '-node.21',

##### V8 defaults for Node.js #####

Expand Down
33 changes: 18 additions & 15 deletions deps/v8/src/execution/clobber-registers.cc
Expand Up @@ -5,19 +5,22 @@

#include "src/base/build_config.h"

#if V8_HOST_ARCH_ARM
// Check both {HOST_ARCH} and {TARGET_ARCH} to disable the functionality of this
// file for cross-compilation. The reason is that the inline assembly code below
// does not work for cross-compilation.
#if V8_HOST_ARCH_ARM && V8_TARGET_ARCH_ARM
#include "src/codegen/arm/register-arm.h"
#elif V8_HOST_ARCH_ARM64
#elif V8_HOST_ARCH_ARM64 && V8_TARGET_ARCH_ARM64
#include "src/codegen/arm64/register-arm64.h"
#elif V8_HOST_ARCH_IA32
#elif V8_HOST_ARCH_IA32 && V8_TARGET_ARCH_IA32
#include "src/codegen/ia32/register-ia32.h"
#elif V8_HOST_ARCH_X64
#elif V8_HOST_ARCH_X64 && V8_TARGET_ARCH_X64
#include "src/codegen/x64/register-x64.h"
#elif V8_HOST_ARCH_LOONG64
#elif V8_HOST_ARCH_LOONG64 && V8_TARGET_ARCH_LOONG64
#include "src/codegen/loong64/register-loong64.h"
#elif V8_HOST_ARCH_MIPS
#elif V8_HOST_ARCH_MIPS && V8_TARGET_ARCH_MIPS
#include "src/codegen/mips/register-mips.h"
#elif V8_HOST_ARCH_MIPS64
#elif V8_HOST_ARCH_MIPS64 && V8_TARGET_ARCH_MIPS64
#include "src/codegen/mips64/register-mips64.h"
#endif

Expand All @@ -26,14 +29,15 @@ namespace internal {

#if V8_CC_MSVC
// msvc only support inline assembly on x86
#if V8_HOST_ARCH_IA32
#if V8_HOST_ARCH_IA32 && V8_TARGET_ARCH_IA32
#define CLOBBER_REGISTER(R) __asm xorps R, R

#endif

#else // !V8_CC_MSVC

#if V8_HOST_ARCH_X64 || V8_HOST_ARCH_IA32
#if (V8_HOST_ARCH_X64 && V8_TARGET_ARCH_X64) || \
(V8_HOST_ARCH_IA32 && V8_TARGET_ARCH_IA32)
#define CLOBBER_REGISTER(R) \
__asm__ volatile( \
"xorps " \
Expand All @@ -42,20 +46,19 @@ namespace internal {
"%%" #R :: \
:);

#elif V8_HOST_ARCH_ARM64
#elif V8_HOST_ARCH_ARM64 && V8_TARGET_ARCH_ARM64
#define CLOBBER_REGISTER(R) __asm__ volatile("fmov " #R ",xzr" :::);

#elif V8_HOST_ARCH_LOONG64
#elif V8_HOST_ARCH_LOONG64 && V8_TARGET_ARCH_LOONG64
#define CLOBBER_REGISTER(R) __asm__ volatile("movgr2fr.d $" #R ",$zero" :::);

#elif V8_HOST_ARCH_MIPS
#elif V8_HOST_ARCH_MIPS && V8_TARGET_ARCH_MIPS
#define CLOBBER_USE_REGISTER(R) __asm__ volatile("mtc1 $zero,$" #R :::);

#elif V8_HOST_ARCH_MIPS64
#elif V8_HOST_ARCH_MIPS64 && V8_TARGET_ARCH_MIPS64
#define CLOBBER_USE_REGISTER(R) __asm__ volatile("dmtc1 $zero,$" #R :::);

#endif // V8_HOST_ARCH_X64 || V8_HOST_ARCH_IA32 || V8_HOST_ARCH_ARM64 ||
// V8_HOST_ARCH_LOONG64 || V8_HOST_ARCH_MIPS || V8_HOST_ARCH_MIPS64
#endif // V8_HOST_ARCH_XXX && V8_TARGET_ARCH_XXX

#endif // V8_CC_MSVC

Expand Down

0 comments on commit c4f665f

Please sign in to comment.