simplify, make non-recursive

pull/15348/head
Rich Harris 7 months ago
parent 75f0adf3ae
commit a2e3fb90e2

@ -615,8 +615,6 @@ function log_effect_stack() {
}
function infinite_loop_guard() {
if (flush_count > 1000) {
flush_count = 0;
try {
e.effect_update_depth_exceeded();
} catch (error) {
@ -648,28 +646,30 @@ function infinite_loop_guard() {
}
}
}
flush_count++;
}
/**
* @param {Array<Effect>} root_effects
* @returns {void}
*/
function flush_queued_root_effects(root_effects) {
queued_root_effects = [];
var length = root_effects.length;
if (length === 0) {
return;
}
infinite_loop_guard();
var previously_flushing_effect = is_flushing_effect;
is_flushing_effect = true;
is_flushing = true;
try {
var length = queued_root_effects.length;
var flush_count = 0;
while (queued_root_effects.length > 0) {
if (flush_count++ > 1000) {
infinite_loop_guard();
}
var root_effects = queued_root_effects;
var length = root_effects.length;
queued_root_effects = [];
for (var i = 0; i < length; i++) {
var effect = root_effects[i];
@ -680,9 +680,6 @@ function flush_queued_root_effects(root_effects) {
var collected_effects = process_effects(effect);
flush_queued_effects(collected_effects);
}
if (queued_root_effects.length > 0) {
flush_queued_root_effects(queued_root_effects);
}
} finally {
is_flushing_effect = previously_flushing_effect;
@ -851,8 +848,6 @@ function process_effects(effect) {
* @returns {any}
*/
export function flush_sync(fn) {
infinite_loop_guard();
is_micro_task_queued = false;
flush_queued_root_effects(queued_root_effects);

Loading…
Cancel
Save