Skip to content

Commit 2c664aa

Browse files
committed
chore: refactor local effect flushing to use new topological approach
1 parent a95f8d6 commit 2c664aa

File tree

1 file changed

+35
-34
lines changed

1 file changed

+35
-34
lines changed

packages/svelte/src/internal/client/runtime.js

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -552,45 +552,46 @@ export function schedule_effect(signal) {
552552
*/
553553
function collect_effects(effect, filter_flags, collected) {
554554
var effects = effect.effects;
555-
if (effects !== null) {
556-
var i, s, child, flags;
557-
var render = [];
558-
var user = [];
559-
560-
for (i = 0; i < effects.length; i++) {
561-
child = effects[i];
562-
flags = child.f;
563-
if ((flags & CLEAN) !== 0) {
564-
continue;
565-
}
555+
if (effects === null) {
556+
return;
557+
}
558+
var i, s, child, flags;
559+
var render = [];
560+
var user = [];
561+
562+
for (i = 0; i < effects.length; i++) {
563+
child = effects[i];
564+
flags = child.f;
565+
if ((flags & CLEAN) !== 0) {
566+
continue;
567+
}
566568

567-
if ((flags & PRE_EFFECT) !== 0) {
568-
if ((filter_flags & PRE_EFFECT) !== 0) {
569-
collected.push(child);
570-
}
571-
collect_effects(child, filter_flags, collected);
572-
} else if ((flags & RENDER_EFFECT) !== 0) {
573-
render.push(child);
574-
} else if ((flags & EFFECT) !== 0) {
575-
user.push(child);
569+
if ((flags & PRE_EFFECT) !== 0) {
570+
if ((filter_flags & PRE_EFFECT) !== 0) {
571+
collected.push(child);
576572
}
573+
collect_effects(child, filter_flags, collected);
574+
} else if ((flags & RENDER_EFFECT) !== 0) {
575+
render.push(child);
576+
} else if ((flags & EFFECT) !== 0) {
577+
user.push(child);
577578
}
579+
}
578580

579-
if (render.length > 0) {
580-
if ((filter_flags & RENDER_EFFECT) !== 0) {
581-
collected.push(...render);
582-
}
583-
for (s = 0; s < render.length; s++) {
584-
collect_effects(render[s], filter_flags, collected);
585-
}
581+
if (render.length > 0) {
582+
if ((filter_flags & RENDER_EFFECT) !== 0) {
583+
collected.push(...render);
586584
}
587-
if (user.length > 0) {
588-
if ((filter_flags & EFFECT) !== 0) {
589-
collected.push(...user);
590-
}
591-
for (s = 0; s < user.length; s++) {
592-
collect_effects(user[s], filter_flags, collected);
593-
}
585+
for (s = 0; s < render.length; s++) {
586+
collect_effects(render[s], filter_flags, collected);
587+
}
588+
}
589+
if (user.length > 0) {
590+
if ((filter_flags & EFFECT) !== 0) {
591+
collected.push(...user);
592+
}
593+
for (s = 0; s < user.length; s++) {
594+
collect_effects(user[s], filter_flags, collected);
594595
}
595596
}
596597
}

0 commit comments

Comments
 (0)