From 749a05614bd93322ab64915b41f16b06551e8e8c Mon Sep 17 00:00:00 2001 From: David Roizenman Date: Mon, 20 Oct 2025 02:30:49 -0700 Subject: [PATCH] use set for less costly parent lookup --- .../svelte/src/internal/client/reactivity/batch.js | 10 +++++----- .../svelte/src/internal/client/reactivity/sources.js | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/svelte/src/internal/client/reactivity/batch.js b/packages/svelte/src/internal/client/reactivity/batch.js index 17830416b7..6b7b115a61 100644 --- a/packages/svelte/src/internal/client/reactivity/batch.js +++ b/packages/svelte/src/internal/client/reactivity/batch.js @@ -560,7 +560,7 @@ function infinite_loop_guard() { } } -/** @type {Effect[] | null} */ +/** @type {Set | null} */ export let eager_block_effects = null; /** @@ -577,7 +577,7 @@ function flush_queued_effects(effects) { var effect = effects[i++]; if ((effect.f & (DESTROYED | INERT)) === 0 && is_dirty(effect)) { - eager_block_effects = []; + eager_block_effects = new Set(); update_effect(effect); @@ -600,7 +600,7 @@ function flush_queued_effects(effects) { // If update_effect() has a flushSync() in it, we may have flushed another flush_queued_effects(), // which already handled this logic and did set eager_block_effects to null. - if (eager_block_effects?.length > 0) { + if (eager_block_effects?.size > 0) { old_values.clear(); /** @type {Effect[]} */ @@ -615,7 +615,7 @@ function flush_queued_effects(effects) { let skip = false; let ancestor = e.parent; while (!skip && ancestor !== null) { - if (eager_block_effects.includes(ancestor)) { + if (eager_block_effects.has(ancestor)) { skip = true; break; } @@ -632,7 +632,7 @@ function flush_queued_effects(effects) { update_effect(e); } - eager_block_effects = []; + eager_block_effects.clear(); } } } diff --git a/packages/svelte/src/internal/client/reactivity/sources.js b/packages/svelte/src/internal/client/reactivity/sources.js index cd0c28016d..c5dcff9cfb 100644 --- a/packages/svelte/src/internal/client/reactivity/sources.js +++ b/packages/svelte/src/internal/client/reactivity/sources.js @@ -336,7 +336,7 @@ function mark_reactions(signal, status) { } else if (not_dirty) { if ((flags & BLOCK_EFFECT) !== 0) { if (eager_block_effects !== null) { - eager_block_effects.push(/** @type {Effect} */ (reaction)); + eager_block_effects.add(/** @type {Effect} */ (reaction)); } }