From d9d26b08efab7c17f5580bbdf78f51c17d60cd5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Tue, 5 Apr 2022 14:14:50 +0200 Subject: [PATCH] deps: V8: cherry-pick 87ce4f5d98a5 Original commit message: [ic] use CSA_DCHECK in CodeStubAssembler::SharedValueBarrier Since the code is generated unconditionally, using a DCHECK to check that shared RO heap is enabled breaks builds with v8_enable_shared_ro_heap set to false, this patch turns that into a CSA_DCHECK so it only crashes when V8 actually attempts to store into a shared struct while the RO heap isn't shared at run time. Refs: https://github.com/nodejs/node/pull/42115 Bug: v8:12547 Change-Id: I30d9a02b98a0b647097125c0a9d141e40d6348cc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3561598 Reviewed-by: Shu-yu Guo Reviewed-by: Leszek Swirski Commit-Queue: Joyee Cheung Cr-Commit-Position: refs/heads/main@{#79756} Refs: https://github.com/v8/v8/commit/87ce4f5d98a5ee4e32a0545001a2d58be61a6e8d PR-URL: https://github.com/nodejs/node/pull/42657 Reviewed-By: Darshan Sen Reviewed-By: Richard Lau Reviewed-By: Jiawen Geng Reviewed-By: Michael Dawson --- common.gypi | 2 +- deps/v8/src/codegen/code-stub-assembler.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common.gypi b/common.gypi index a879c4f93d8d45..ecb5dd907f2b75 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.7', + 'v8_embedder_string': '-node.8', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/src/codegen/code-stub-assembler.cc b/deps/v8/src/codegen/code-stub-assembler.cc index c90b644a3c1c16..364bfa029da09a 100644 --- a/deps/v8/src/codegen/code-stub-assembler.cc +++ b/deps/v8/src/codegen/code-stub-assembler.cc @@ -15953,7 +15953,7 @@ void CodeStubAssembler::SharedValueBarrier( GotoIf(TaggedIsSmi(value), &done); // Fast path: Shared memory features imply shared RO space, so RO objects are // trivially shared. - DCHECK(ReadOnlyHeap::IsReadOnlySpaceShared()); + CSA_DCHECK(this, BoolConstant(ReadOnlyHeap::IsReadOnlySpaceShared())); TNode page_flags = LoadBasicMemoryChunkFlags(CAST(value)); GotoIf(WordNotEqual(WordAnd(page_flags, IntPtrConstant(BasicMemoryChunk::READ_ONLY_HEAP)),