Skip to content

Commit 0c97306

Browse files
committed
improve change detection
1 parent ffab346 commit 0c97306

File tree

2 files changed

+8
-17
lines changed

2 files changed

+8
-17
lines changed

packages/svelte/src/internal/client/dev/tracing.js

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,16 @@ import { UNINITIALIZED } from '../../../constants.js';
33
import { snapshot } from '../../shared/clone.js';
44
import { define_property } from '../../shared/utils.js';
55
import { DERIVED, STATE_SYMBOL } from '../constants.js';
6-
import {
7-
active_reaction,
8-
captured_signals,
9-
set_captured_signals,
10-
trace_version,
11-
untrack
12-
} from '../runtime.js';
6+
import { active_reaction, captured_signals, set_captured_signals, untrack } from '../runtime.js';
137

148
/** @type { any } */
159
export let tracing_expressions = null;
1610

1711
/**
1812
* @param { Value } signal
19-
* @param { number } version
2013
* @param { { read: Error[] } } [entry]
2114
*/
22-
function log_entry(signal, version, entry) {
15+
function log_entry(signal, entry) {
2316
const debug = signal.debug;
2417
const value = signal.v;
2518

@@ -40,15 +33,16 @@ function log_entry(signal, version, entry) {
4033
}
4134
if (captured.size > 0) {
4235
for (const dep of captured) {
43-
log_entry(dep, signal.version);
36+
log_entry(dep);
4437
}
4538
return;
4639
}
4740
}
4841
const type = (signal.f & DERIVED) !== 0 ? 'derived' : 'state';
4942
const current_reaction = /** @type {Reaction} */ (active_reaction);
5043
const status =
51-
signal.version > current_reaction.version || version === signal.version ? 'dirty' : 'clean';
44+
signal.version > current_reaction.version || current_reaction.version === 0 ? 'dirty' : 'clean';
45+
5246
// eslint-disable-next-line no-console
5347
console.groupCollapsed(
5448
`%c${type}`,
@@ -61,7 +55,7 @@ function log_entry(signal, version, entry) {
6155
if (type === 'derived') {
6256
const deps = new Set(/** @type {Derived} */ (signal).deps);
6357
for (const dep of deps) {
64-
log_entry(dep, version);
58+
log_entry(dep);
6559
}
6660
}
6761

@@ -112,7 +106,6 @@ export function trace(fn, label) {
112106
tracing_expressions = { entries: new Map(), reaction: active_reaction };
113107

114108
var start = performance.now();
115-
var version = trace_version;
116109
var value = fn();
117110
var time = (performance.now() - start).toFixed(2);
118111

@@ -128,7 +121,7 @@ export function trace(fn, label) {
128121
tracing_expressions = null;
129122

130123
for (const [signal, entry] of entries) {
131-
log_entry(signal, version, entry);
124+
log_entry(signal, entry);
132125
}
133126
// eslint-disable-next-line no-console
134127
console.groupEnd();

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,7 @@ export function set_untracked_writes(value) {
123123
}
124124

125125
/** @type {number} Used by sources and deriveds for handling updates to unowned deriveds */
126-
export let current_version = 0;
127-
export let trace_version = 0;
126+
let current_version = 0;
128127

129128
// If we are working with a get() chain that has no active container,
130129
// to prevent memory leaks, we skip adding the reaction.
@@ -505,7 +504,6 @@ function flush_queued_root_effects(root_effects) {
505504

506505
var previously_flushing_effect = is_flushing_effect;
507506
is_flushing_effect = true;
508-
trace_version = current_version;
509507

510508
try {
511509
for (var i = 0; i < length; i++) {

0 commit comments

Comments
 (0)