diff --git a/patches/v8/.patches b/patches/v8/.patches index 0e16c5eabc6fe..ea88a8670a84c 100644 --- a/patches/v8/.patches +++ b/patches/v8/.patches @@ -10,3 +10,4 @@ revert_fix_cppgc_removed_deleted_cstors_in_cppheapcreateparams.patch revert_runtime_dhceck_terminating_exception_in_microtasks.patch chore_disable_is_execution_terminating_dcheck.patch build_remove_legacy_oom_error_callback.patch +cherry-pick-5e227bebf193.patch diff --git a/patches/v8/cherry-pick-5e227bebf193.patch b/patches/v8/cherry-pick-5e227bebf193.patch new file mode 100644 index 0000000000000..31e47fac5dcf5 --- /dev/null +++ b/patches/v8/cherry-pick-5e227bebf193.patch @@ -0,0 +1,72 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Noordhuis +Date: Sat, 9 Jul 2022 14:05:56 +0200 +Subject: Fix undefined symbol linker error + +Assembler::CheckBuffer() was defined inline in a header file but without +inline linkage, causing an undefined symbol link error on arm64 macOS. + +Fixes: https://github.com/nodejs/node-v8/issues/233 +Bug: v8:13055 +Change-Id: Ifb638705e95de72b2e8d472e7092e88d77cf8ba8 +Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3749583 +Auto-Submit: Ben Noordhuis +Reviewed-by: Leszek Swirski +Reviewed-by: Jakob Kummerow +Commit-Queue: Leszek Swirski +Cr-Commit-Position: refs/heads/main@{#81749} + +diff --git a/src/codegen/arm64/assembler-arm64-inl.h b/src/codegen/arm64/assembler-arm64-inl.h +index da4201b28307a71e988b50e26fc8854fdcc510d4..60deb07b65b5acaaa1e8762cc57730f366f483d2 100644 +--- a/src/codegen/arm64/assembler-arm64-inl.h ++++ b/src/codegen/arm64/assembler-arm64-inl.h +@@ -1066,21 +1066,6 @@ const Register& Assembler::AppropriateZeroRegFor(const CPURegister& reg) const { + return reg.Is64Bits() ? xzr : wzr; + } + +-inline void Assembler::CheckBufferSpace() { +- DCHECK_LT(pc_, buffer_start_ + buffer_->size()); +- if (V8_UNLIKELY(buffer_space() < kGap)) { +- GrowBuffer(); +- } +-} +- +-V8_INLINE void Assembler::CheckBuffer() { +- CheckBufferSpace(); +- if (pc_offset() >= next_veneer_pool_check_) { +- CheckVeneerPool(false, true); +- } +- constpool_.MaybeCheck(); +-} +- + EnsureSpace::EnsureSpace(Assembler* assembler) : block_pools_scope_(assembler) { + assembler->CheckBufferSpace(); + } +diff --git a/src/codegen/arm64/assembler-arm64.h b/src/codegen/arm64/assembler-arm64.h +index 703e4bba9381c57849882e7cb2cdeb751064dd2a..dceda86275d3ef0bfc2b5bea9d8f04957b2e721c 100644 +--- a/src/codegen/arm64/assembler-arm64.h ++++ b/src/codegen/arm64/assembler-arm64.h +@@ -2625,8 +2625,21 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase { + } + + void GrowBuffer(); +- V8_INLINE void CheckBufferSpace(); +- void CheckBuffer(); ++ ++ void CheckBufferSpace() { ++ DCHECK_LT(pc_, buffer_start_ + buffer_->size()); ++ if (V8_UNLIKELY(buffer_space() < kGap)) { ++ GrowBuffer(); ++ } ++ } ++ ++ void CheckBuffer() { ++ CheckBufferSpace(); ++ if (pc_offset() >= next_veneer_pool_check_) { ++ CheckVeneerPool(false, true); ++ } ++ constpool_.MaybeCheck(); ++ } + + // Emission of the veneer pools may be blocked in some code sequences. + int veneer_pool_blocked_nesting_; // Block emission if this is not zero.