diff --git a/common.gypi b/common.gypi index b5e4ea18728..bd91c2692f7 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/compiler/js-heap-broker.cc b/deps/v8/src/compiler/js-heap-broker.cc index 1a7ce3b9f6a..d33cf928f73 100644 --- a/deps/v8/src/compiler/js-heap-broker.cc +++ b/deps/v8/src/compiler/js-heap-broker.cc @@ -861,7 +861,7 @@ ElementAccessFeedback const& JSHeapBroker::ProcessFeedbackMapsForElementAccess( Tagged transition_target; // Don't generate elements kind transitions from stable maps. - if (!map.is_stable()) { + if (!map.is_stable() && possible_transition_targets.begin() != possible_transition_targets.end()) { // The lock is needed for UnusedPropertyFields (called deep inside // FindElementsKindTransitionedMap). MapUpdaterGuardIfNeeded mumd_scope(this); diff --git a/deps/v8/src/execution/frames.h b/deps/v8/src/execution/frames.h index 68aff9502e1..c7ad2d3a27e 100644 --- a/deps/v8/src/execution/frames.h +++ b/deps/v8/src/execution/frames.h @@ -1269,11 +1269,11 @@ class WasmFrame : public TypedFrame { void Summarize(std::vector* frames) const override; static WasmFrame* cast(StackFrame* frame) { - DCHECK(frame->is_wasm() #ifdef V8_ENABLE_DRUMBRAKE - && !frame->is_wasm_interpreter_entry() + DCHECK(frame->is_wasm() && !frame->is_wasm_interpreter_entry()); +#else + DCHECK(frame->is_wasm()); #endif // V8_ENABLE_DRUMBRAKE - ); return static_cast(frame); } diff --git a/deps/v8/src/objects/tagged-field.h b/deps/v8/src/objects/tagged-field.h index af09fe53441..1669b24f831 100644 --- a/deps/v8/src/objects/tagged-field.h +++ b/deps/v8/src/objects/tagged-field.h @@ -101,12 +101,10 @@ static_assert(sizeof(UnalignedDoubleMember) == sizeof(double)); #define FLEXIBLE_ARRAY_MEMBER(Type, name) \ using FlexibleDataReturnType = Type[0]; \ FlexibleDataReturnType& name() { \ - static_assert(alignof(Type) <= alignof(decltype(*this))); \ using ReturnType = Type[0]; \ return reinterpret_cast(*(this + 1)); \ } \ const FlexibleDataReturnType& name() const { \ - static_assert(alignof(Type) <= alignof(decltype(*this))); \ using ReturnType = Type[0]; \ return reinterpret_cast(*(this + 1)); \ } \ diff --git a/deps/v8/src/wasm/wasm-objects.cc b/deps/v8/src/wasm/wasm-objects.cc index b37eb06f780..785aab50bc8 100644 --- a/deps/v8/src/wasm/wasm-objects.cc +++ b/deps/v8/src/wasm/wasm-objects.cc @@ -2455,14 +2455,19 @@ Handle WasmExportedFunction::New( DirectHandle func_ref, DirectHandle internal_function, int arity, DirectHandle export_wrapper) { +#if V8_ENABLE_DRUMBRAKE DCHECK(CodeKind::JS_TO_WASM_FUNCTION == export_wrapper->kind() || (export_wrapper->is_builtin() && (export_wrapper->builtin_id() == Builtin::kJSToWasmWrapper || -#if V8_ENABLE_DRUMBRAKE export_wrapper->builtin_id() == Builtin::kGenericJSToWasmInterpreterWrapper || -#endif // V8_ENABLE_DRUMBRAKE export_wrapper->builtin_id() == Builtin::kWasmPromising))); +#else + DCHECK(CodeKind::JS_TO_WASM_FUNCTION == export_wrapper->kind() || + (export_wrapper->is_builtin() && + (export_wrapper->builtin_id() == Builtin::kJSToWasmWrapper || + export_wrapper->builtin_id() == Builtin::kWasmPromising))); +#endif // V8_ENABLE_DRUMBRAKE int func_index = internal_function->function_index(); Factory* factory = isolate->factory(); const wasm::WasmModule* module = instance_data->module();