@@ -313,7 +313,7 @@ function cleanupEffect(e: ReactiveEffect) {
313
313
}
314
314
}
315
315
316
- //#region Ported from https://github.com/stackblitz/alien-signals/blob/v0.3.1 /src/system.ts
316
+ //#region Ported from https://github.com/stackblitz/alien-signals/blob/v0.3.2 /src/system.ts
317
317
export interface IEffect extends Subscriber {
318
318
nextNotify : IEffect | undefined
319
319
notify ( ) : void
@@ -532,6 +532,8 @@ export function propagate(subs: Link): void {
532
532
//#region Subscriber
533
533
export function checkDirty ( deps : Link ) : boolean {
534
534
let stack = 0
535
+ let dirty : boolean
536
+ let nextDep : Link | undefined
535
537
536
538
top: do {
537
539
const dep = deps . dep
@@ -544,44 +546,17 @@ export function checkDirty(deps: Link): boolean {
544
546
++ stack
545
547
continue
546
548
}
547
- if ( dirtyLevel === DirtyLevels . Dirty ) {
548
- if ( dep . update ( ) ) {
549
- propagate ( dep . subs ! )
550
- let dirty = true
551
- if ( stack > 0 ) {
552
- let sub = deps . sub as IComputed
553
- do {
554
- -- stack
555
- const subSubs = sub . subs !
556
- const prevLink = subSubs . prevSub !
557
- subSubs . prevSub = undefined
558
- if ( dirty ) {
559
- if ( sub . update ( ) ) {
560
- propagate ( subSubs )
561
- deps = prevLink
562
- sub = prevLink . sub as IComputed
563
- dirty = true
564
- continue
565
- }
566
- } else {
567
- sub . dirtyLevel = DirtyLevels . None
568
- }
569
- deps = prevLink . nextDep !
570
- if ( deps !== undefined ) {
571
- continue top
572
- }
573
- dirty = false
574
- sub = prevLink . sub as IComputed
575
- } while ( stack > 0 )
576
- }
577
- return dirty
578
- }
549
+ if ( dirtyLevel === DirtyLevels . Dirty && dep . update ( ) ) {
550
+ propagate ( dep . subs ! )
551
+ dirty = true
552
+ } else {
553
+ dirty = false
579
554
}
555
+ } else {
556
+ dirty = false
580
557
}
581
558
582
- const nextDep = deps . nextDep !
583
- if ( nextDep === undefined ) {
584
- let dirty = false
559
+ if ( dirty || ( nextDep = deps . nextDep ) === undefined ) {
585
560
if ( stack > 0 ) {
586
561
let sub = deps . sub as IComputed
587
562
do {
0 commit comments