Skip to content

Commit dd24f16

Browse files
committed
Fix ReactFiberScheduler dead code elimination
Should initialize to nothing, then assign the exports conditionally, instead of initializing to the old exports and then reassigning to the new ones.
1 parent 821a22f commit dd24f16

File tree

3 files changed

+76
-69
lines changed

3 files changed

+76
-69
lines changed

packages/react-reconciler/src/ReactFiberScheduler.js

Lines changed: 71 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -65,59 +65,77 @@ import {
6565
inferStartTimeFromExpirationTime as inferStartTimeFromExpirationTime_new,
6666
} from './ReactFiberScheduler.new';
6767

68-
export let requestCurrentTime = requestCurrentTime_old;
69-
export let computeExpirationForFiber = computeExpirationForFiber_old;
70-
export let captureCommitPhaseError = captureCommitPhaseError_old;
71-
export let onUncaughtError = onUncaughtError_old;
72-
export let renderDidSuspend = renderDidSuspend_old;
73-
export let renderDidError = renderDidError_old;
74-
export let pingSuspendedRoot = pingSuspendedRoot_old;
75-
export let retryTimedOutBoundary = retryTimedOutBoundary_old;
76-
export let resolveRetryThenable = resolveRetryThenable_old;
77-
export let markLegacyErrorBoundaryAsFailed = markLegacyErrorBoundaryAsFailed_old;
78-
export let isAlreadyFailedLegacyErrorBoundary = isAlreadyFailedLegacyErrorBoundary_old;
79-
export let scheduleWork = scheduleWork_old;
80-
export let flushRoot = flushRoot_old;
81-
export let batchedUpdates = batchedUpdates_old;
82-
export let unbatchedUpdates = unbatchedUpdates_old;
83-
export let flushSync = flushSync_old;
84-
export let flushControlled = flushControlled_old;
85-
export let deferredUpdates = deferredUpdates_old;
86-
export let syncUpdates = syncUpdates_old;
87-
export let interactiveUpdates = interactiveUpdates_old;
88-
export let flushInteractiveUpdates = flushInteractiveUpdates_old;
89-
export let computeUniqueAsyncExpiration = computeUniqueAsyncExpiration_old;
90-
export let flushPassiveEffects = flushPassiveEffects_old;
91-
export let warnIfNotCurrentlyBatchingInDev = warnIfNotCurrentlyBatchingInDev_old;
92-
export let inferStartTimeFromExpirationTime = inferStartTimeFromExpirationTime_old;
93-
94-
if (enableNewScheduler) {
95-
requestCurrentTime = requestCurrentTime_new;
96-
computeExpirationForFiber = computeExpirationForFiber_new;
97-
captureCommitPhaseError = captureCommitPhaseError_new;
98-
onUncaughtError = onUncaughtError_new;
99-
renderDidSuspend = renderDidSuspend_new;
100-
renderDidError = renderDidError_new;
101-
pingSuspendedRoot = pingSuspendedRoot_new;
102-
retryTimedOutBoundary = retryTimedOutBoundary_new;
103-
resolveRetryThenable = resolveRetryThenable_new;
104-
markLegacyErrorBoundaryAsFailed = markLegacyErrorBoundaryAsFailed_new;
105-
isAlreadyFailedLegacyErrorBoundary = isAlreadyFailedLegacyErrorBoundary_new;
106-
scheduleWork = scheduleWork_new;
107-
flushRoot = flushRoot_new;
108-
batchedUpdates = batchedUpdates_new;
109-
unbatchedUpdates = unbatchedUpdates_new;
110-
flushSync = flushSync_new;
111-
flushControlled = flushControlled_new;
112-
deferredUpdates = deferredUpdates_new;
113-
syncUpdates = syncUpdates_new;
114-
interactiveUpdates = interactiveUpdates_new;
115-
flushInteractiveUpdates = flushInteractiveUpdates_new;
116-
computeUniqueAsyncExpiration = computeUniqueAsyncExpiration_new;
117-
flushPassiveEffects = flushPassiveEffects_new;
118-
warnIfNotCurrentlyBatchingInDev = warnIfNotCurrentlyBatchingInDev_new;
119-
inferStartTimeFromExpirationTime = inferStartTimeFromExpirationTime_new;
120-
}
68+
export const requestCurrentTime = enableNewScheduler
69+
? requestCurrentTime_new
70+
: requestCurrentTime_old;
71+
export const computeExpirationForFiber = enableNewScheduler
72+
? computeExpirationForFiber_new
73+
: computeExpirationForFiber_old;
74+
export const captureCommitPhaseError = enableNewScheduler
75+
? captureCommitPhaseError_new
76+
: captureCommitPhaseError_old;
77+
export const onUncaughtError = enableNewScheduler
78+
? onUncaughtError_new
79+
: onUncaughtError_old;
80+
export const renderDidSuspend = enableNewScheduler
81+
? renderDidSuspend_new
82+
: renderDidSuspend_old;
83+
export const renderDidError = enableNewScheduler
84+
? renderDidError_new
85+
: renderDidError_old;
86+
export const pingSuspendedRoot = enableNewScheduler
87+
? pingSuspendedRoot_new
88+
: pingSuspendedRoot_old;
89+
export const retryTimedOutBoundary = enableNewScheduler
90+
? retryTimedOutBoundary_new
91+
: retryTimedOutBoundary_old;
92+
export const resolveRetryThenable = enableNewScheduler
93+
? resolveRetryThenable_new
94+
: resolveRetryThenable_old;
95+
export const markLegacyErrorBoundaryAsFailed = enableNewScheduler
96+
? markLegacyErrorBoundaryAsFailed_new
97+
: markLegacyErrorBoundaryAsFailed_old;
98+
export const isAlreadyFailedLegacyErrorBoundary = enableNewScheduler
99+
? isAlreadyFailedLegacyErrorBoundary_new
100+
: isAlreadyFailedLegacyErrorBoundary_old;
101+
export const scheduleWork = enableNewScheduler
102+
? scheduleWork_new
103+
: scheduleWork_old;
104+
export const flushRoot = enableNewScheduler ? flushRoot_new : flushRoot_old;
105+
export const batchedUpdates = enableNewScheduler
106+
? batchedUpdates_new
107+
: batchedUpdates_old;
108+
export const unbatchedUpdates = enableNewScheduler
109+
? unbatchedUpdates_new
110+
: unbatchedUpdates_old;
111+
export const flushSync = enableNewScheduler ? flushSync_new : flushSync_old;
112+
export const flushControlled = enableNewScheduler
113+
? flushControlled_new
114+
: flushControlled_old;
115+
export const deferredUpdates = enableNewScheduler
116+
? deferredUpdates_new
117+
: deferredUpdates_old;
118+
export const syncUpdates = enableNewScheduler
119+
? syncUpdates_new
120+
: syncUpdates_old;
121+
export const interactiveUpdates = enableNewScheduler
122+
? interactiveUpdates_new
123+
: interactiveUpdates_old;
124+
export const flushInteractiveUpdates = enableNewScheduler
125+
? flushInteractiveUpdates_new
126+
: flushInteractiveUpdates_old;
127+
export const computeUniqueAsyncExpiration = enableNewScheduler
128+
? computeUniqueAsyncExpiration_new
129+
: computeUniqueAsyncExpiration_old;
130+
export const flushPassiveEffects = enableNewScheduler
131+
? flushPassiveEffects_new
132+
: flushPassiveEffects_old;
133+
export const warnIfNotCurrentlyBatchingInDev = enableNewScheduler
134+
? warnIfNotCurrentlyBatchingInDev_new
135+
: warnIfNotCurrentlyBatchingInDev_old;
136+
export const inferStartTimeFromExpirationTime = enableNewScheduler
137+
? inferStartTimeFromExpirationTime_new
138+
: inferStartTimeFromExpirationTime_old;
121139

122140
export type Thenable = {
123141
then(resolve: () => mixed, reject?: () => mixed): mixed,

scripts/rollup/forks.js

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -65,25 +65,14 @@ const forks = Object.freeze({
6565
return null;
6666
},
6767

68-
'react-reconciler/src/ReactFiberScheduler': (bundleType, entry) => {
69-
if (entry === 'react-dom/unstable-new-scheduler') {
70-
return 'react-reconciler/src/ReactFiberScheduler.new.js';
71-
}
72-
return 'react-reconciler/src/ReactFiberScheduler.old.js';
73-
},
74-
7568
// We have a few forks for different environments.
7669
'shared/ReactFeatureFlags': (bundleType, entry) => {
7770
switch (entry) {
7871
case 'react-dom/unstable-new-scheduler': {
79-
switch (bundleType) {
80-
case FB_WWW_DEV:
81-
case FB_WWW_PROD:
82-
case FB_WWW_PROFILING:
83-
return 'shared/forks/ReactFeatureFlags.www-new-scheduler.js';
84-
default:
85-
return 'shared/forks/ReactFeatureFlags.new-scheduler.js';
72+
if (entry === 'react-dom/unstable-new-scheduler') {
73+
return 'shared/forks/ReactFeatureFlags.www-new-scheduler.js';
8674
}
75+
return null;
8776
}
8877
case 'react-native-renderer':
8978
switch (bundleType) {

scripts/rollup/results.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1187,8 +1187,8 @@
11871187
"filename": "ReactDOMNewScheduler-prod.js",
11881188
"bundleType": "FB_WWW_PROD",
11891189
"packageName": "react-dom",
1190-
"size": 322404,
1191-
"gzip": 59691
1190+
"size": 324273,
1191+
"gzip": 60088
11921192
},
11931193
{
11941194
"filename": "ReactDOMNewScheduler-profiling.js",

0 commit comments

Comments
 (0)