From cdebfb62869adc70259612a1b27859ffe8ef91ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Mon, 31 Jul 2023 11:51:27 +0200 Subject: [PATCH] deps: avoid compilation error with ASan Refs: https://bugs.chromium.org/p/v8/issues/detail?id=14221 --- common.gypi | 2 +- deps/v8/src/deoptimizer/translated-state.cc | 8 ++--- deps/v8/src/objects/object-macros.h | 36 ++++++++++++++------- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/common.gypi b/common.gypi index 100ba00a8fab42..12421a556f1b71 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.3', + 'v8_embedder_string': '-node.4', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/src/deoptimizer/translated-state.cc b/deps/v8/src/deoptimizer/translated-state.cc index 7354210ae91030..eb13a86d67059a 100644 --- a/deps/v8/src/deoptimizer/translated-state.cc +++ b/deps/v8/src/deoptimizer/translated-state.cc @@ -2188,7 +2188,7 @@ void TranslatedState::InitializeJSObjectAt( Handle properties = GetValueAndAdvance(frame, value_index); WRITE_FIELD(*object_storage, JSObject::kPropertiesOrHashOffset, *properties); - WRITE_BARRIER(*object_storage, JSObject::kPropertiesOrHashOffset, + WRITE_BARRIER_POINTER(*object_storage, JSObject::kPropertiesOrHashOffset, *properties); } @@ -2205,14 +2205,14 @@ void TranslatedState::InitializeJSObjectAt( if (marker == kStoreHeapObject) { Handle field_value = slot->storage(); WRITE_FIELD(*object_storage, offset, *field_value); - WRITE_BARRIER(*object_storage, offset, *field_value); + WRITE_BARRIER_POINTER(*object_storage, offset, *field_value); } else { CHECK_EQ(kStoreTagged, marker); Handle field_value = slot->GetValue(); DCHECK_IMPLIES(field_value->IsHeapNumber(), !IsSmiDouble(field_value->Number())); WRITE_FIELD(*object_storage, offset, *field_value); - WRITE_BARRIER(*object_storage, offset, *field_value); + WRITE_BARRIER_POINTER(*object_storage, offset, *field_value); } } object_storage->set_map(*map, kReleaseStore); @@ -2264,7 +2264,7 @@ void TranslatedState::InitializeObjectWithTaggedFieldsAt( !IsSmiDouble(field_value->Number())); } WRITE_FIELD(*object_storage, offset, *field_value); - WRITE_BARRIER(*object_storage, offset, *field_value); + WRITE_BARRIER_POINTER(*object_storage, offset, *field_value); } object_storage->set_map(*map, kReleaseStore); diff --git a/deps/v8/src/objects/object-macros.h b/deps/v8/src/objects/object-macros.h index f7a7e8081d44c4..f08cc0b4f9088d 100644 --- a/deps/v8/src/objects/object-macros.h +++ b/deps/v8/src/objects/object-macros.h @@ -507,24 +507,36 @@ #ifdef V8_DISABLE_WRITE_BARRIERS #define WRITE_BARRIER(object, offset, value) #else -#define WRITE_BARRIER(object, offset, value) \ - do { \ - DCHECK_NOT_NULL(GetHeapFromWritableObject(object)); \ - static_assert(kTaggedCanConvertToRawObjects); \ - CombinedWriteBarrier(object, Tagged(object)->RawField(offset), value, \ - UPDATE_WRITE_BARRIER); \ +#define WRITE_BARRIER(object, offset, value) \ + do { \ + DCHECK_NOT_NULL(GetHeapFromWritableObject(object)); \ + static_assert(kTaggedCanConvertToRawObjects); \ + CombinedWriteBarrier(object, (object).RawField(offset), value, \ + UPDATE_WRITE_BARRIER); \ + } while (false) +#endif + +#ifdef V8_DISABLE_WRITE_BARRIERS +#define WRITE_BARRIER_POINTER(object, offset, value) +#else +#define WRITE_BARRIER_POINTER(object, offset, value) \ + do { \ + DCHECK_NOT_NULL(GetHeapFromWritableObject(object)); \ + static_assert(kTaggedCanConvertToRawObjects); \ + CombinedWriteBarrier(object, (object)->RawField(offset), value, \ + UPDATE_WRITE_BARRIER); \ } while (false) #endif #ifdef V8_DISABLE_WRITE_BARRIERS #define WEAK_WRITE_BARRIER(object, offset, value) #else -#define WEAK_WRITE_BARRIER(object, offset, value) \ - do { \ - DCHECK_NOT_NULL(GetHeapFromWritableObject(object)); \ - static_assert(kTaggedCanConvertToRawObjects); \ - CombinedWriteBarrier(object, Tagged(object)->RawMaybeWeakField(offset), \ - value, UPDATE_WRITE_BARRIER); \ +#define WEAK_WRITE_BARRIER(object, offset, value) \ + do { \ + DCHECK_NOT_NULL(GetHeapFromWritableObject(object)); \ + static_assert(kTaggedCanConvertToRawObjects); \ + CombinedWriteBarrier(object, (object).RawMaybeWeakField(offset), value, \ + UPDATE_WRITE_BARRIER); \ } while (false) #endif