Skip to content

Commit e8f7c8a

Browse files
committed
perf: inline Pending flag unset
1 parent 63c7919 commit e8f7c8a

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/index.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,13 @@ function notify(e: Effect | EffectScope) {
209209
function run(e: Effect | EffectScope, flags: ReactiveFlags): void {
210210
if (
211211
flags & 16 satisfies ReactiveFlags.Dirty
212-
|| (flags & 32 satisfies ReactiveFlags.Pending && checkDirty(e.deps!, e))
212+
|| (
213+
flags & 32 satisfies ReactiveFlags.Pending
214+
&& (
215+
checkDirty(e.deps!, e)
216+
|| (e.flags = flags & ~(32 satisfies ReactiveFlags.Pending), false)
217+
)
218+
)
213219
) {
214220
const prev = setCurrentSub(e);
215221
startTracking(e);
@@ -220,8 +226,6 @@ function run(e: Effect | EffectScope, flags: ReactiveFlags): void {
220226
endTracking(e);
221227
}
222228
return;
223-
} else if (flags & 32 satisfies ReactiveFlags.Pending) {
224-
e.flags = flags & ~(32 satisfies ReactiveFlags.Pending);
225229
}
226230
let link = e.deps;
227231
while (link !== undefined) {
@@ -248,16 +252,20 @@ function computedOper<T>(this: Computed<T>): T {
248252
const flags = this.flags;
249253
if (
250254
flags & 16 satisfies ReactiveFlags.Dirty
251-
|| (flags & 32 satisfies ReactiveFlags.Pending && checkDirty(this.deps!, this))
255+
|| (
256+
flags & 32 satisfies ReactiveFlags.Pending
257+
&& (
258+
checkDirty(this.deps!, this)
259+
|| (this.flags = flags & ~(32 satisfies ReactiveFlags.Pending), false)
260+
)
261+
)
252262
) {
253263
if (updateComputed(this)) {
254264
const subs = this.subs;
255265
if (subs !== undefined) {
256266
shallowPropagate(subs);
257267
}
258268
}
259-
} else if (flags & 32 satisfies ReactiveFlags.Pending) {
260-
this.flags = flags & ~(32 satisfies ReactiveFlags.Pending);
261269
}
262270
if (activeSub !== undefined) {
263271
link(this, activeSub);

0 commit comments

Comments
 (0)