diff --git a/patches/v8/.patches b/patches/v8/.patches index 886a2ec1a311..280a34b93603 100644 --- a/patches/v8/.patches +++ b/patches/v8/.patches @@ -1,3 +1,2 @@ chore_allow_customizing_microtask_policy_per_context.patch deps_add_v8_object_setinternalfieldfornodecore.patch -fix_disable_scope_reuse_associated_dchecks.patch diff --git a/patches/v8/fix_disable_scope_reuse_associated_dchecks.patch b/patches/v8/fix_disable_scope_reuse_associated_dchecks.patch deleted file mode 100644 index fb603cff56c1..000000000000 --- a/patches/v8/fix_disable_scope_reuse_associated_dchecks.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Calvin Watford -Date: Wed, 17 Jul 2024 12:52:10 -0600 -Subject: fix: disable scope reuse & associated dchecks - -This change was introduced in https://crrev.com/c/5630974 which reuses -scope info objects across allocations. Unfortunately, this change seems -to be not yet fully cooked and causes crashes with normal usage of V8. - -In particular, Node.js call's V8's `v8::ScriptCompiler::CompileFunction` -method. This ends up wrapping the source code in a function, which this -code is not yet prepared to handle. The generated function wrapper -(created by V8) has no source position, so it reports being at the start -of the source, which may overlap with other scopes that are in the -original source. This new feature adds a "UniqueIdInScript" concept that -is derived from the source position of a scope, along with the invariant -that inner scopes have a higher ID than outer scopes, which does not -hold for the above situation. - -This patch is not intended to remain indefinitely. Once the upstream -feature stabilizes, we can remove this patch. Unfortunately, there is no -public tracking bug for this feature nor the crashes its been causing, -so we'll have to keep an eye on this for the time being. - -diff --git a/src/ast/scopes.cc b/src/ast/scopes.cc -index 57a9dca1a84dee95d36c2b296fc170399db3e213..5db78a650068faa0bacf05b13d86860c9616e20e 100644 ---- a/src/ast/scopes.cc -+++ b/src/ast/scopes.cc -@@ -2731,10 +2731,10 @@ void Scope::AllocateScopeInfosRecursively( - for (Scope* scope = inner_scope_; scope != nullptr; scope = scope->sibling_) { - #ifdef DEBUG - if (!scope->is_hidden_catch_scope()) { -- DCHECK_GT(scope->UniqueIdInScript(), UniqueIdInScript()); -- DCHECK_IMPLIES( -- scope->sibling_ && !scope->sibling_->is_hidden_catch_scope(), -- scope->sibling_->UniqueIdInScript() != scope->UniqueIdInScript()); -+ // DCHECK_GT(scope->UniqueIdInScript(), UniqueIdInScript()); -+ // DCHECK_IMPLIES( -+ // scope->sibling_ && !scope->sibling_->is_hidden_catch_scope(), -+ // scope->sibling_->UniqueIdInScript() != scope->UniqueIdInScript()); - } - #endif - if (!scope->is_function_scope() || -diff --git a/src/flags/flag-definitions.h b/src/flags/flag-definitions.h -index 670cb9f3658737acd953a4dcbb502c407a79212b..42765a8069d62df908ada15b3b89b7d8476744bb 100644 ---- a/src/flags/flag-definitions.h -+++ b/src/flags/flag-definitions.h -@@ -964,7 +964,12 @@ DEFINE_BOOL(trace_track_allocation_sites, false, - DEFINE_BOOL(trace_migration, false, "trace object migration") - DEFINE_BOOL(trace_generalization, false, "trace map generalization") - --DEFINE_BOOL(reuse_scope_infos, true, "reuse scope infos from previous compiles") -+// ELECTRON: The following flag should remain false by default until we can -+// remove `fix_disable_scope_reuse_associated_dchecks.patch` -+DEFINE_BOOL(reuse_scope_infos, false, -+ "reuse scope infos from previous compiles") -+ -+DEFINE_IMPLICATION(fuzzing, reuse_scope_infos) - - // Flags for Sparkplug - #undef FLAG