Skip to content

Commit eee88e3

Browse files
committed
Avoid dynamic dispatch for scheduler calls
1 parent 00748c5 commit eee88e3

File tree

5 files changed

+48
-89
lines changed

5 files changed

+48
-89
lines changed

packages/react-art/src/ReactARTHostConfig.js

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,24 @@
55
* LICENSE file in the root directory of this source tree.
66
*/
77

8-
import {
9-
unstable_scheduleCallback as scheduleDeferredCallback,
10-
unstable_cancelCallback as cancelDeferredCallback,
11-
} from 'scheduler';
12-
export {
13-
unstable_now as now,
14-
unstable_scheduleCallback as scheduleDeferredCallback,
15-
unstable_shouldYield as shouldYield,
16-
unstable_cancelCallback as cancelDeferredCallback,
17-
} from 'scheduler';
188
import Transform from 'art/core/transform';
199
import Mode from 'art/modes/current';
10+
import * as Scheduler from 'scheduler';
2011
import invariant from 'shared/invariant';
2112

2213
import {TYPES, EVENT_TYPES, childrenAsString} from './ReactARTInternals';
2314

15+
// Intentionally not named imports because Rollup would
16+
// use dynamic dispatch for CommonJS interop named imports.
17+
const {
18+
unstable_now: now,
19+
unstable_scheduleCallback: scheduleDeferredCallback,
20+
unstable_shouldYield: shouldYield,
21+
unstable_cancelCallback: cancelDeferredCallback,
22+
} = Scheduler;
23+
24+
export {now, scheduleDeferredCallback, shouldYield, cancelDeferredCallback};
25+
2426
const pooledTransform = new Transform();
2527

2628
const NO_CONTEXT = {};

packages/react-cache/src/LRU.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@
77
* @flow
88
*/
99

10-
import {unstable_scheduleCallback as scheduleCallback} from 'scheduler';
10+
import * as Scheduler from 'scheduler';
11+
12+
// Intentionally not named imports because Rollup would
13+
// use dynamic dispatch for CommonJS interop named imports.
14+
const {unstable_scheduleCallback: scheduleCallback} = Scheduler;
1115

1216
type Entry<T> = {|
1317
value: T,

packages/react-dom/src/client/ReactDOMHostConfig.js

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
* @flow
88
*/
99

10+
import * as Scheduler from 'scheduler';
11+
1012
import {precacheFiberNode, updateFiberProps} from './ReactDOMComponentTree';
1113
import {
1214
createElement,
@@ -70,17 +72,18 @@ export type ChildSet = void; // Unused
7072
export type TimeoutHandle = TimeoutID;
7173
export type NoTimeout = -1;
7274

73-
import {
74-
unstable_scheduleCallback as scheduleDeferredCallback,
75-
unstable_cancelCallback as cancelDeferredCallback,
76-
} from 'scheduler';
7775
import {enableSuspenseServerRenderer} from 'shared/ReactFeatureFlags';
78-
export {
79-
unstable_now as now,
80-
unstable_scheduleCallback as scheduleDeferredCallback,
81-
unstable_shouldYield as shouldYield,
82-
unstable_cancelCallback as cancelDeferredCallback,
83-
} from 'scheduler';
76+
77+
// Intentionally not named imports because Rollup would
78+
// use dynamic dispatch for CommonJS interop named imports.
79+
const {
80+
unstable_now: now,
81+
unstable_scheduleCallback: scheduleDeferredCallback,
82+
unstable_shouldYield: shouldYield,
83+
unstable_cancelCallback: cancelDeferredCallback,
84+
} = Scheduler;
85+
86+
export {now, scheduleDeferredCallback, shouldYield, cancelDeferredCallback};
8487

8588
let SUPPRESS_HYDRATION_WARNING;
8689
if (__DEV__) {

packages/react-reconciler/src/ReactFiberScheduler.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,7 @@ import {
1717
__subscriberRef,
1818
unstable_wrap as Scheduler_tracing_wrap,
1919
} from 'scheduler/tracing';
20-
import {
21-
unstable_next as Scheduler_next,
22-
unstable_getCurrentPriorityLevel as getCurrentPriorityLevel,
23-
unstable_runWithPriority as runWithPriority,
24-
unstable_ImmediatePriority as ImmediatePriority,
25-
unstable_UserBlockingPriority as UserBlockingPriority,
26-
unstable_NormalPriority as NormalPriority,
27-
unstable_LowPriority as LowPriority,
28-
unstable_IdlePriority as IdlePriority,
29-
} from 'scheduler';
20+
import * as Scheduler from 'scheduler';
3021
import {
3122
invokeGuardedCallback,
3223
hasCaughtError,
@@ -181,6 +172,19 @@ export type Thenable = {
181172
then(resolve: () => mixed, reject?: () => mixed): mixed,
182173
};
183174

175+
// Intentionally not named imports because Rollup would
176+
// use dynamic dispatch for CommonJS interop named imports.
177+
const {
178+
unstable_next: Scheduler_next,
179+
unstable_getCurrentPriorityLevel: getCurrentPriorityLevel,
180+
unstable_runWithPriority: runWithPriority,
181+
unstable_ImmediatePriority: ImmediatePriority,
182+
unstable_UserBlockingPriority: UserBlockingPriority,
183+
unstable_NormalPriority: NormalPriority,
184+
unstable_LowPriority: LowPriority,
185+
unstable_IdlePriority: IdlePriority,
186+
} = Scheduler;
187+
184188
const {ReactCurrentDispatcher, ReactCurrentOwner} = ReactSharedInternals;
185189

186190
let didWarnAboutStateTransition;

packages/react/src/ReactSharedInternals.js

Lines changed: 4 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,8 @@
66
*/
77

88
import assign from 'object-assign';
9-
import {
10-
unstable_cancelCallback,
11-
unstable_shouldYield,
12-
unstable_now,
13-
unstable_scheduleCallback,
14-
unstable_runWithPriority,
15-
unstable_next,
16-
unstable_getFirstCallbackNode,
17-
unstable_pauseExecution,
18-
unstable_continueExecution,
19-
unstable_wrapCallback,
20-
unstable_getCurrentPriorityLevel,
21-
unstable_IdlePriority,
22-
unstable_ImmediatePriority,
23-
unstable_LowPriority,
24-
unstable_NormalPriority,
25-
unstable_UserBlockingPriority,
26-
} from 'scheduler';
27-
import {
28-
__interactionsRef,
29-
__subscriberRef,
30-
unstable_clear,
31-
unstable_getCurrent,
32-
unstable_getThreadID,
33-
unstable_subscribe,
34-
unstable_trace,
35-
unstable_unsubscribe,
36-
unstable_wrap,
37-
} from 'scheduler/tracing';
9+
import * as Scheduler from 'scheduler';
10+
import * as SchedulerTracing from 'scheduler/tracing';
3811
import ReactCurrentDispatcher from './ReactCurrentDispatcher';
3912
import ReactCurrentOwner from './ReactCurrentOwner';
4013
import ReactDebugCurrentFrame from './ReactDebugCurrentFrame';
@@ -53,35 +26,8 @@ if (__UMD__) {
5326
// This re-export is only required for UMD bundles;
5427
// CJS bundles use the shared NPM package.
5528
Object.assign(ReactSharedInternals, {
56-
Scheduler: {
57-
unstable_cancelCallback,
58-
unstable_shouldYield,
59-
unstable_now,
60-
unstable_scheduleCallback,
61-
unstable_runWithPriority,
62-
unstable_next,
63-
unstable_wrapCallback,
64-
unstable_getFirstCallbackNode,
65-
unstable_pauseExecution,
66-
unstable_continueExecution,
67-
unstable_getCurrentPriorityLevel,
68-
unstable_IdlePriority,
69-
unstable_ImmediatePriority,
70-
unstable_LowPriority,
71-
unstable_NormalPriority,
72-
unstable_UserBlockingPriority,
73-
},
74-
SchedulerTracing: {
75-
__interactionsRef,
76-
__subscriberRef,
77-
unstable_clear,
78-
unstable_getCurrent,
79-
unstable_getThreadID,
80-
unstable_subscribe,
81-
unstable_trace,
82-
unstable_unsubscribe,
83-
unstable_wrap,
84-
},
29+
Scheduler,
30+
SchedulerTracing,
8531
});
8632
}
8733

0 commit comments

Comments
 (0)