diff --git a/packages/react-reconciler/src/ReactFiberCommitWork.js b/packages/react-reconciler/src/ReactFiberCommitWork.js index 164f099e98852..251b1b10b05c1 100644 --- a/packages/react-reconciler/src/ReactFiberCommitWork.js +++ b/packages/react-reconciler/src/ReactFiberCommitWork.js @@ -28,7 +28,7 @@ import { enableSchedulerTracing, enableProfilerTimer, enableSuspenseServerRenderer, - enableUpdateSchedulerTracking, + enableUpdaterTracking, enableEventAPI, } from 'shared/ReactFeatureFlags'; import { @@ -105,7 +105,7 @@ import { captureCommitPhaseError, requestCurrentTime, resolveRetryThenable, - restorePendingSchedulers, + restorePendingUpdaters, } from './ReactFiberScheduler'; import { NoEffect as NoHookEffect, @@ -1346,9 +1346,9 @@ function commitSuspenseComponent( if (enableSchedulerTracing) { retry = Schedule_tracing_wrap(retry); } - if (enableUpdateSchedulerTracking) { - // If we have pending work still, restore the original schedulers - restorePendingSchedulers(finishedRoot, committedExpirationTime); + if (enableUpdaterTracking) { + // If we have pending work still, restore the original updaters + restorePendingUpdaters(finishedRoot, committedExpirationTime); } retryCache.add(thenable); thenable.then(retry, retry); diff --git a/packages/react-reconciler/src/ReactFiberRoot.js b/packages/react-reconciler/src/ReactFiberRoot.js index 4999404ba825e..14e8b2f19f68d 100644 --- a/packages/react-reconciler/src/ReactFiberRoot.js +++ b/packages/react-reconciler/src/ReactFiberRoot.js @@ -19,7 +19,7 @@ import {createHostRootFiber} from './ReactFiber'; import {NoWork} from './ReactFiberExpirationTime'; import { enableSchedulerTracing, - enableUpdateSchedulerTracking, + enableUpdaterTracking, } from 'shared/ReactFeatureFlags'; import {unstable_getThreadID} from 'scheduler/tracing'; @@ -33,8 +33,8 @@ export type Batch = { export type PendingInteractionMap = Map>; -// Map of expiration time to all pending "schedulers" which in turn is a map of Fibers to reference counts. -export type PendingSchedulersMap = Map>; +// Map of expiration time to all pending "updaters" which in turn is a map of Fibers to reference counts. +export type PendingUpdatersMap = Map>; type BaseFiberRootProperties = {| // The type of root (legacy, batched, concurrent, etc.) @@ -91,9 +91,9 @@ type ProfilingOnlyFiberRootProperties = {| // The following attributes are only used by DevTools and are only present in DEV builds. // They enable DevTools Profiler UI to show which Fiber(s) scheduled a given commit. -type SchedulerTrackingOnlyFiberRootProperties = {| - memoizedSchedulers: Set, - pendingSchedulersMap: PendingSchedulersMap, +type UpdaterTrackingOnlyFiberRootProperties = {| + memoizedUpdaters: Set, + pendingUpdatersMap: PendingUpdatersMap, |}; // Exported FiberRoot type includes all properties, @@ -104,7 +104,7 @@ type SchedulerTrackingOnlyFiberRootProperties = {| export type FiberRoot = { ...BaseFiberRootProperties, ...ProfilingOnlyFiberRootProperties, - ...SchedulerTrackingOnlyFiberRootProperties, + ...UpdaterTrackingOnlyFiberRootProperties, }; function FiberRootNode(containerInfo, tag, hydrate) { @@ -132,9 +132,9 @@ function FiberRootNode(containerInfo, tag, hydrate) { this.pendingInteractionMap = new Map(); } - if (enableUpdateSchedulerTracking) { - this.memoizedSchedulers = new Set(); - this.pendingSchedulersMap = new Map(); + if (enableUpdaterTracking) { + this.memoizedUpdaters = new Set(); + this.pendingUpdatersMap = new Map(); } } diff --git a/packages/react-reconciler/src/ReactFiberScheduler.js b/packages/react-reconciler/src/ReactFiberScheduler.js index d45b04710f5e5..5cf623ee0005e 100644 --- a/packages/react-reconciler/src/ReactFiberScheduler.js +++ b/packages/react-reconciler/src/ReactFiberScheduler.js @@ -19,7 +19,7 @@ import type {Interaction} from 'scheduler/src/Tracing'; import { warnAboutDeprecatedLifecycles, enableUserTimingAPI, - enableUpdateSchedulerTracking, + enableUpdaterTracking, enableSuspenseServerRenderer, replayFailedUnitOfWorkWithInvokeGuardedCallback, enableProfilerTimer, @@ -337,14 +337,14 @@ export function scheduleUpdateOnFiber( return; } - if (enableUpdateSchedulerTracking) { - const pendingSchedulersMap = root.pendingSchedulersMap; - let schedulers = pendingSchedulersMap.get(expirationTime); - if (schedulers == null) { - schedulers = new Set(); - pendingSchedulersMap.set(expirationTime, schedulers); + if (enableUpdaterTracking) { + const pendingUpdatersMap = root.pendingUpdatersMap; + let updaters = pendingUpdatersMap.get(expirationTime); + if (updaters == null) { + updaters = new Set(); + pendingUpdatersMap.set(expirationTime, updaters); } - schedulers.add(fiber); + updaters.add(fiber); } root.pingTime = NoWork; @@ -1296,7 +1296,7 @@ function commitRootImpl(root) { if (enableSchedulerTracing) { if (firstPendingTimeBeforeCommit !== NoWork) { - restorePendingSchedulers(root, root.lastPendingTime); + restorePendingUpdaters(root, root.lastPendingTime); } } } @@ -2182,21 +2182,21 @@ function warnIfNotCurrentlyActingUpdatesInDEV(fiber: Fiber): void { } } -export function restorePendingSchedulers( +export function restorePendingUpdaters( root: FiberRoot, expirationTime: ExpirationTime, ): void { - if (!enableUpdateSchedulerTracking) { + if (!enableUpdaterTracking) { return; } - const pendingSchedulersMap = root.pendingSchedulersMap; - let schedulers = pendingSchedulersMap.get(expirationTime); - if (schedulers == null) { - schedulers = new Set(); - pendingSchedulersMap.set(expirationTime, schedulers); + const pendingUpdatersMap = root.pendingUpdatersMap; + let updaters = pendingUpdatersMap.get(expirationTime); + if (updaters == null) { + updaters = new Set(); + pendingUpdatersMap.set(expirationTime, updaters); } - root.memoizedSchedulers.forEach(schedulingFiber => { - ((schedulers: any): Set).add(schedulingFiber); + root.memoizedUpdaters.forEach(schedulingFiber => { + ((updaters: any): Set).add(schedulingFiber); }); } @@ -2317,13 +2317,13 @@ function schedulePendingInteraction(root, expirationTime) { function startWorkOnPendingInteraction(root, expirationTime) { // This is called when new work is started on a root. - if (enableUpdateSchedulerTracking) { - const memoizedSchedulers: Set = new Set(); - const pendingSchedulersMap = root.pendingSchedulersMap; - pendingSchedulersMap.forEach((schedulers, scheduledExpirationTime) => { + if (enableUpdaterTracking) { + const memoizedUpdaters: Set = new Set(); + const pendingUpdatersMap = root.pendingUpdatersMap; + pendingUpdatersMap.forEach((updaters, scheduledExpirationTime) => { if (scheduledExpirationTime >= expirationTime) { - pendingSchedulersMap.delete(scheduledExpirationTime); - schedulers.forEach(fiber => memoizedSchedulers.add(fiber)); + pendingUpdatersMap.delete(scheduledExpirationTime); + updaters.forEach(fiber => memoizedUpdaters.add(fiber)); } }); @@ -2331,7 +2331,7 @@ function startWorkOnPendingInteraction(root, expirationTime) { // We can re-use it in hot functions like renderRoot() without having to // recalculate it. This also provides DevTools with a way to access it when // the onCommitRoot() hook is called. - root.memoizedSchedulers = memoizedSchedulers; + root.memoizedUpdaters = memoizedUpdaters; } if (enableSchedulerTracing) { diff --git a/packages/react-reconciler/src/ReactFiberUnwindWork.js b/packages/react-reconciler/src/ReactFiberUnwindWork.js index a5dc9b5bc23d6..2e1808543af7b 100644 --- a/packages/react-reconciler/src/ReactFiberUnwindWork.js +++ b/packages/react-reconciler/src/ReactFiberUnwindWork.js @@ -40,7 +40,7 @@ import { import { enableSchedulerTracing, enableSuspenseServerRenderer, - enableUpdateSchedulerTracking, + enableUpdaterTracking, enableEventAPI, } from 'shared/ReactFeatureFlags'; import {NoMode, BatchedMode} from './ReactTypeOfMode'; @@ -77,7 +77,7 @@ import { pingSuspendedRoot, resolveRetryThenable, checkForWrongSuspensePriorityInDEV, - restorePendingSchedulers, + restorePendingUpdaters, } from './ReactFiberScheduler'; import invariant from 'shared/invariant'; @@ -189,9 +189,9 @@ function attachPingListener( if (enableSchedulerTracing) { ping = Schedule_tracing_wrap(ping); } - if (enableUpdateSchedulerTracking) { - // If we have pending work still, restore the original schedulers - restorePendingSchedulers(root, renderExpirationTime); + if (enableUpdaterTracking) { + // If we have pending work still, restore the original updaters + restorePendingUpdaters(root, renderExpirationTime); } thenable.then(ping, ping); } @@ -209,9 +209,9 @@ function throwException( // Its effect list is no longer valid. sourceFiber.firstEffect = sourceFiber.lastEffect = null; - if (enableUpdateSchedulerTracking) { - // If we have pending work still, restore the original schedulers - restorePendingSchedulers(root, renderExpirationTime); + if (enableUpdaterTracking) { + // If we have pending work still, restore the original updaters + restorePendingUpdaters(root, renderExpirationTime); } if ( diff --git a/packages/react-reconciler/src/__tests__/ReactSchedulers-test.internal.js b/packages/react-reconciler/src/__tests__/ReactUpdaters-test.internal.js similarity index 95% rename from packages/react-reconciler/src/__tests__/ReactSchedulers-test.internal.js rename to packages/react-reconciler/src/__tests__/ReactUpdaters-test.internal.js index ecbcee9c3f6de..6dd4ef189b9fe 100644 --- a/packages/react-reconciler/src/__tests__/ReactSchedulers-test.internal.js +++ b/packages/react-reconciler/src/__tests__/ReactUpdaters-test.internal.js @@ -18,7 +18,7 @@ let mockDevToolsHook; let allSchedulerTags; let allSchedulerTypes; -describe('schedulers', () => { +describe('updaters', () => { beforeEach(() => { jest.resetModules(); @@ -31,7 +31,7 @@ describe('schedulers', () => { Scheduler.yieldValue('onCommitRoot'); const schedulerTags = []; const schedulerTypes = []; - fiberRoot.memoizedSchedulers.forEach(fiber => { + fiberRoot.memoizedUpdaters.forEach(fiber => { schedulerTags.push(fiber.tag); schedulerTypes.push(fiber.elementType); }); @@ -48,7 +48,7 @@ describe('schedulers', () => { ); ReactFeatureFlags = require('shared/ReactFeatureFlags'); - ReactFeatureFlags.enableUpdateSchedulerTracking = true; + ReactFeatureFlags.enableUpdaterTracking = true; ReactFeatureFlags.debugRenderPhaseSideEffectsForStrictMode = false; React = require('react'); @@ -221,9 +221,6 @@ describe('schedulers', () => { expect(allSchedulerTypes[4]).toHaveLength(1); expect(allSchedulerTypes[4]).toContain(CascadingChild); - // Question: Should SchedulingComponent also be reported for the cascading updates? - // I have mixed feelings about this; it's easier not to include it so... - // Verify no outstanding flushes Scheduler.flushAll(); }); @@ -397,9 +394,7 @@ describe('schedulers', () => { mockDevToolsHook.onCommitRoot.mockImplementation(fiberRoot => { Scheduler.yieldValue('onCommitRoot'); schedulerTypes.push( - Array.from(fiberRoot.memoizedSchedulers).map( - fiber => fiber.elementType, - ), + Array.from(fiberRoot.memoizedUpdaters).map(fiber => fiber.elementType), ); }); @@ -417,14 +412,11 @@ describe('schedulers', () => { expect(schedulerTypes[1]).toHaveLength(1); expect(schedulerTypes[1]).toContain(ErrorBoundary); - // Question: Should Parent also be reported in the second schedulers set? - // I have mixed feelings about this; it's easier not to include it so... - // Verify no outstanding flushes Scheduler.flushAll(); }); - it('should distinguish between schedulers in the case of interleaved work', () => { + it('should distinguish between updaters in the case of interleaved work', () => { let triggerLowPriorityUpdate = null; let triggerSyncPriorityUpdate = null; diff --git a/packages/shared/ReactFeatureFlags.js b/packages/shared/ReactFeatureFlags.js index a4492d9b0943b..88d9cb9d47d26 100644 --- a/packages/shared/ReactFeatureFlags.js +++ b/packages/shared/ReactFeatureFlags.js @@ -32,7 +32,7 @@ export const enableProfilerTimer = __PROFILE__; export const enableSchedulerTracing = __PROFILE__; // Track which Fiber(s) schedule render work. -export const enableUpdateSchedulerTracking = __PROFILE__; +export const enableUpdaterTracking = __PROFILE__; // Only used in www builds. export const enableSuspenseServerRenderer = false; // TODO: __DEV__? Here it might just be false. diff --git a/packages/shared/forks/ReactFeatureFlags.native-fb.js b/packages/shared/forks/ReactFeatureFlags.native-fb.js index b11ace5f41caf..a70bdcd6eae6f 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-fb.js +++ b/packages/shared/forks/ReactFeatureFlags.native-fb.js @@ -19,7 +19,7 @@ export const {debugRenderPhaseSideEffects} = require('ReactFeatureFlags'); export const enableUserTimingAPI = __DEV__; export const enableProfilerTimer = __PROFILE__; export const enableSchedulerTracing = __PROFILE__; -export const enableUpdateSchedulerTracking = __PROFILE__; +export const enableUpdaterTracking = __PROFILE__; export const enableSuspenseServerRenderer = false; export const enableStableConcurrentModeAPIs = false; export const warnAboutShorthandPropertyCollision = false; diff --git a/packages/shared/forks/ReactFeatureFlags.native-oss.js b/packages/shared/forks/ReactFeatureFlags.native-oss.js index 487cb083c15b6..14080c617f579 100644 --- a/packages/shared/forks/ReactFeatureFlags.native-oss.js +++ b/packages/shared/forks/ReactFeatureFlags.native-oss.js @@ -19,7 +19,7 @@ export const replayFailedUnitOfWorkWithInvokeGuardedCallback = __DEV__; export const warnAboutDeprecatedLifecycles = true; export const enableProfilerTimer = __PROFILE__; export const enableSchedulerTracing = __PROFILE__; -export const enableUpdateSchedulerTracking = __PROFILE__; +export const enableUpdaterTracking = __PROFILE__; export const enableSuspenseServerRenderer = false; export const disableJavaScriptURLs = false; export const disableYielding = false; diff --git a/packages/shared/forks/ReactFeatureFlags.persistent.js b/packages/shared/forks/ReactFeatureFlags.persistent.js index 8d6c91e08394c..d30a778a0db76 100644 --- a/packages/shared/forks/ReactFeatureFlags.persistent.js +++ b/packages/shared/forks/ReactFeatureFlags.persistent.js @@ -19,7 +19,7 @@ export const warnAboutDeprecatedLifecycles = true; export const replayFailedUnitOfWorkWithInvokeGuardedCallback = __DEV__; export const enableProfilerTimer = __PROFILE__; export const enableSchedulerTracing = __PROFILE__; -export const enableUpdateSchedulerTracking = __PROFILE__; +export const enableUpdaterTracking = __PROFILE__; export const enableSuspenseServerRenderer = false; export const disableJavaScriptURLs = false; export const disableYielding = false; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.js index 06a1f04d05e7f..98e54184907df 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.js @@ -19,7 +19,7 @@ export const warnAboutDeprecatedLifecycles = false; export const replayFailedUnitOfWorkWithInvokeGuardedCallback = false; export const enableProfilerTimer = false; export const enableSchedulerTracing = false; -export const enableUpdateSchedulerTracking = false; +export const enableUpdaterTracking = false; export const enableSuspenseServerRenderer = false; export const disableJavaScriptURLs = false; export const disableYielding = false; diff --git a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js index f708fb31217b4..23e43b18bc911 100644 --- a/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js +++ b/packages/shared/forks/ReactFeatureFlags.test-renderer.www.js @@ -19,7 +19,7 @@ export const warnAboutDeprecatedLifecycles = true; export const replayFailedUnitOfWorkWithInvokeGuardedCallback = false; export const enableProfilerTimer = false; export const enableSchedulerTracing = false; -export const enableUpdateSchedulerTracking = false; +export const enableUpdaterTracking = false; export const enableSuspenseServerRenderer = false; export const enableStableConcurrentModeAPIs = false; export const enableSchedulerDebugging = false; diff --git a/packages/shared/forks/ReactFeatureFlags.www.js b/packages/shared/forks/ReactFeatureFlags.www.js index deb5f2fd82db5..5b46f4838e15b 100644 --- a/packages/shared/forks/ReactFeatureFlags.www.js +++ b/packages/shared/forks/ReactFeatureFlags.www.js @@ -32,7 +32,7 @@ export let enableUserTimingAPI = __DEV__; export const enableProfilerTimer = __PROFILE__; export const enableSchedulerTracing = __PROFILE__; -export const enableUpdateSchedulerTracking = __PROFILE__; +export const enableUpdaterTracking = __PROFILE__; export const enableSchedulerDebugging = true; export const enableStableConcurrentModeAPIs = false;