Avoid dynamic dispatch for scheduler calls (#14968)
Dan Abramov committed
Mar 1, 2019 at 15:04 UTC
02404d793b84c057e0f3f712f8ce565f81d4b7ab
5 files changed
+48
-89
packages/react-art/src/ReactARTHostConfig.js
+12
-10
@@ -5,22 +5,24 @@
5
* LICENSE file in the root directory of this source tree.
6
*/
7
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';
8
import Transform from 'art/core/transform';
9
import Mode from 'art/modes/current';
10
+import * as Scheduler from 'scheduler';
11
import invariant from 'shared/invariant';
12
13
import {TYPES, EVENT_TYPES, childrenAsString} from './ReactARTInternals';
14
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
+
26
const pooledTransform = new Transform();
27
28
const NO_CONTEXT = {};
packages/react-cache/src/LRU.js
+5
-1
@@ -7,7 +7,11 @@
7
* @flow
8
*/
9
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;
15
16
type Entry<T> = {|
17
value: T,
packages/react-dom/src/client/ReactDOMHostConfig.js
+13
-10
@@ -7,6 +7,8 @@
7
* @flow
8
*/
9
10
+import * as Scheduler from 'scheduler';
11
+
12
import {precacheFiberNode, updateFiberProps} from './ReactDOMComponentTree';
13
import {
14
createElement,
@@ -70,17 +72,18 @@ export type ChildSet = void; // Unused
72
export type TimeoutHandle = TimeoutID;
73
export type NoTimeout = -1;
74
73
-import {
74
- unstable_scheduleCallback as scheduleDeferredCallback,
75
- unstable_cancelCallback as cancelDeferredCallback,
76
-} from 'scheduler';
75
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};
87
88
let SUPPRESS_HYDRATION_WARNING;
89
if (__DEV__) {
packages/react-reconciler/src/ReactFiberScheduler.js
+14
-10
@@ -17,16 +17,7 @@ import {
17
__subscriberRef,
18
unstable_wrap as Scheduler_tracing_wrap,
19
} 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';
21
import {
22
invokeGuardedCallback,
23
hasCaughtError,
@@ -181,6 +172,19 @@ export type Thenable = {
172
then(resolve: () => mixed, reject?: () => mixed): mixed,
173
};
174
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
+
188
const {ReactCurrentDispatcher, ReactCurrentOwner} = ReactSharedInternals;
189
190
let didWarnAboutStateTransition;
packages/react/src/ReactSharedInternals.js
+4
-58
@@ -6,35 +6,8 @@
6
*/
7
8
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';
11
import ReactCurrentDispatcher from './ReactCurrentDispatcher';
12
import ReactCurrentOwner from './ReactCurrentOwner';
13
import ReactDebugCurrentFrame from './ReactDebugCurrentFrame';
@@ -53,35 +26,8 @@ if (__UMD__) {
26
// This re-export is only required for UMD bundles;
27
// CJS bundles use the shared NPM package.
28
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,
31
});
32
}
33