Skip to content

Commit 114ab52

Browse files
authored
Make remaining empty lanes Transition lanes (#20793)
Doesn't really have any effect now because we batch everything together anyway but will allow for more parallelism once we support that.
1 parent d3d2451 commit 114ab52

File tree

4 files changed

+148
-122
lines changed

4 files changed

+148
-122
lines changed

packages/react-reconciler/src/ReactFiberLane.new.js

+37-27
Original file line numberDiff line numberDiff line change
@@ -87,38 +87,43 @@ export const SyncBatchedLane: Lane = /* */ 0b0000000000000000000
8787
export const InputDiscreteHydrationLane: Lane = /* */ 0b0000000000000000000000000000100;
8888
const InputDiscreteLane: Lanes = /* */ 0b0000000000000000000000000001000;
8989

90-
const InputContinuousHydrationLane: Lane = /* */ 0b0000000000000000000000000100000;
91-
const InputContinuousLane: Lanes = /* */ 0b0000000000000000000000001000000;
92-
93-
export const DefaultHydrationLane: Lane = /* */ 0b0000000000000000000000100000000;
94-
export const DefaultLane: Lanes = /* */ 0b0000000000000000000001000000000;
95-
96-
const TransitionHydrationLane: Lane = /* */ 0b0000000000000000001000000000000;
97-
const TransitionLanes: Lanes = /* */ 0b0000000001111111110000000000000;
98-
const TransitionLane1: Lane = /* */ 0b0000000000000000010000000000000;
99-
const TransitionLane2: Lane = /* */ 0b0000000000000000100000000000000;
100-
const TransitionLane3: Lane = /* */ 0b0000000000000001000000000000000;
101-
const TransitionLane4: Lane = /* */ 0b0000000000000010000000000000000;
102-
const TransitionLane5: Lane = /* */ 0b0000000000000100000000000000000;
103-
const TransitionLane6: Lane = /* */ 0b0000000000001000000000000000000;
104-
const TransitionLane7: Lane = /* */ 0b0000000000010000000000000000000;
105-
const TransitionLane8: Lane = /* */ 0b0000000000100000000000000000000;
106-
const TransitionLane9: Lane = /* */ 0b0000000001000000000000000000000;
107-
108-
const RetryLanes: Lanes = /* */ 0b0000011110000000000000000000000;
109-
const RetryLane1: Lane = /* */ 0b0000000010000000000000000000000;
110-
const RetryLane2: Lane = /* */ 0b0000000100000000000000000000000;
111-
const RetryLane3: Lane = /* */ 0b0000001000000000000000000000000;
112-
const RetryLane4: Lane = /* */ 0b0000010000000000000000000000000;
90+
const InputContinuousHydrationLane: Lane = /* */ 0b0000000000000000000000000010000;
91+
const InputContinuousLane: Lanes = /* */ 0b0000000000000000000000000100000;
92+
93+
export const DefaultHydrationLane: Lane = /* */ 0b0000000000000000000000001000000;
94+
export const DefaultLane: Lanes = /* */ 0b0000000000000000000000010000000;
95+
96+
const TransitionLanes: Lanes = /* */ 0b0000000011111111111111100000000;
97+
const TransitionHydrationLane: Lane = /* */ 0b0000000000000000000000100000000;
98+
const TransitionLane1: Lane = /* */ 0b0000000000000000000001000000000;
99+
const TransitionLane2: Lane = /* */ 0b0000000000000000000010000000000;
100+
const TransitionLane3: Lane = /* */ 0b0000000000000000000100000000000;
101+
const TransitionLane4: Lane = /* */ 0b0000000000000000001000000000000;
102+
const TransitionLane5: Lane = /* */ 0b0000000000000000010000000000000;
103+
const TransitionLane6: Lane = /* */ 0b0000000000000000100000000000000;
104+
const TransitionLane7: Lane = /* */ 0b0000000000000001000000000000000;
105+
const TransitionLane8: Lane = /* */ 0b0000000000000010000000000000000;
106+
const TransitionLane9: Lane = /* */ 0b0000000000000100000000000000000;
107+
const TransitionLane10: Lane = /* */ 0b0000000000001000000000000000000;
108+
const TransitionLane11: Lane = /* */ 0b0000000000010000000000000000000;
109+
const TransitionLane12: Lane = /* */ 0b0000000000100000000000000000000;
110+
const TransitionLane13: Lane = /* */ 0b0000000001000000000000000000000;
111+
const TransitionLane14: Lane = /* */ 0b0000000010000000000000000000000;
112+
113+
const RetryLanes: Lanes = /* */ 0b0000111100000000000000000000000;
114+
const RetryLane1: Lane = /* */ 0b0000000100000000000000000000000;
115+
const RetryLane2: Lane = /* */ 0b0000001000000000000000000000000;
116+
const RetryLane3: Lane = /* */ 0b0000010000000000000000000000000;
117+
const RetryLane4: Lane = /* */ 0b0000100000000000000000000000000;
113118

114119
export const SomeRetryLane: Lane = RetryLane1;
115120

116-
export const SelectiveHydrationLane: Lane = /* */ 0b0000100000000000000000000000000;
121+
export const SelectiveHydrationLane: Lane = /* */ 0b0001000000000000000000000000000;
117122

118-
const NonIdleLanes = /* */ 0b0000111111111111111111111111111;
123+
const NonIdleLanes = /* */ 0b0001111111111111111111111111111;
119124

120-
export const IdleHydrationLane: Lane = /* */ 0b0001000000000000000000000000000;
121-
const IdleLane: Lanes = /* */ 0b0010000000000000000000000000000;
125+
export const IdleHydrationLane: Lane = /* */ 0b0010000000000000000000000000000;
126+
const IdleLane: Lanes = /* */ 0b0100000000000000000000000000000;
122127

123128
export const OffscreenLane: Lane = /* */ 0b1000000000000000000000000000000;
124129

@@ -179,6 +184,11 @@ function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
179184
case TransitionLane7:
180185
case TransitionLane8:
181186
case TransitionLane9:
187+
case TransitionLane10:
188+
case TransitionLane11:
189+
case TransitionLane12:
190+
case TransitionLane13:
191+
case TransitionLane14:
182192
return_highestLanePriority = TransitionPriority;
183193
return lanes & TransitionLanes;
184194
case RetryLane1:

packages/react-reconciler/src/ReactFiberLane.old.js

+37-27
Original file line numberDiff line numberDiff line change
@@ -87,38 +87,43 @@ export const SyncBatchedLane: Lane = /* */ 0b0000000000000000000
8787
export const InputDiscreteHydrationLane: Lane = /* */ 0b0000000000000000000000000000100;
8888
const InputDiscreteLane: Lanes = /* */ 0b0000000000000000000000000001000;
8989

90-
const InputContinuousHydrationLane: Lane = /* */ 0b0000000000000000000000000100000;
91-
const InputContinuousLane: Lanes = /* */ 0b0000000000000000000000001000000;
92-
93-
export const DefaultHydrationLane: Lane = /* */ 0b0000000000000000000000100000000;
94-
export const DefaultLane: Lanes = /* */ 0b0000000000000000000001000000000;
95-
96-
const TransitionHydrationLane: Lane = /* */ 0b0000000000000000001000000000000;
97-
const TransitionLanes: Lanes = /* */ 0b0000000001111111110000000000000;
98-
const TransitionLane1: Lane = /* */ 0b0000000000000000010000000000000;
99-
const TransitionLane2: Lane = /* */ 0b0000000000000000100000000000000;
100-
const TransitionLane3: Lane = /* */ 0b0000000000000001000000000000000;
101-
const TransitionLane4: Lane = /* */ 0b0000000000000010000000000000000;
102-
const TransitionLane5: Lane = /* */ 0b0000000000000100000000000000000;
103-
const TransitionLane6: Lane = /* */ 0b0000000000001000000000000000000;
104-
const TransitionLane7: Lane = /* */ 0b0000000000010000000000000000000;
105-
const TransitionLane8: Lane = /* */ 0b0000000000100000000000000000000;
106-
const TransitionLane9: Lane = /* */ 0b0000000001000000000000000000000;
107-
108-
const RetryLanes: Lanes = /* */ 0b0000011110000000000000000000000;
109-
const RetryLane1: Lane = /* */ 0b0000000010000000000000000000000;
110-
const RetryLane2: Lane = /* */ 0b0000000100000000000000000000000;
111-
const RetryLane3: Lane = /* */ 0b0000001000000000000000000000000;
112-
const RetryLane4: Lane = /* */ 0b0000010000000000000000000000000;
90+
const InputContinuousHydrationLane: Lane = /* */ 0b0000000000000000000000000010000;
91+
const InputContinuousLane: Lanes = /* */ 0b0000000000000000000000000100000;
92+
93+
export const DefaultHydrationLane: Lane = /* */ 0b0000000000000000000000001000000;
94+
export const DefaultLane: Lanes = /* */ 0b0000000000000000000000010000000;
95+
96+
const TransitionLanes: Lanes = /* */ 0b0000000011111111111111100000000;
97+
const TransitionHydrationLane: Lane = /* */ 0b0000000000000000000000100000000;
98+
const TransitionLane1: Lane = /* */ 0b0000000000000000000001000000000;
99+
const TransitionLane2: Lane = /* */ 0b0000000000000000000010000000000;
100+
const TransitionLane3: Lane = /* */ 0b0000000000000000000100000000000;
101+
const TransitionLane4: Lane = /* */ 0b0000000000000000001000000000000;
102+
const TransitionLane5: Lane = /* */ 0b0000000000000000010000000000000;
103+
const TransitionLane6: Lane = /* */ 0b0000000000000000100000000000000;
104+
const TransitionLane7: Lane = /* */ 0b0000000000000001000000000000000;
105+
const TransitionLane8: Lane = /* */ 0b0000000000000010000000000000000;
106+
const TransitionLane9: Lane = /* */ 0b0000000000000100000000000000000;
107+
const TransitionLane10: Lane = /* */ 0b0000000000001000000000000000000;
108+
const TransitionLane11: Lane = /* */ 0b0000000000010000000000000000000;
109+
const TransitionLane12: Lane = /* */ 0b0000000000100000000000000000000;
110+
const TransitionLane13: Lane = /* */ 0b0000000001000000000000000000000;
111+
const TransitionLane14: Lane = /* */ 0b0000000010000000000000000000000;
112+
113+
const RetryLanes: Lanes = /* */ 0b0000111100000000000000000000000;
114+
const RetryLane1: Lane = /* */ 0b0000000100000000000000000000000;
115+
const RetryLane2: Lane = /* */ 0b0000001000000000000000000000000;
116+
const RetryLane3: Lane = /* */ 0b0000010000000000000000000000000;
117+
const RetryLane4: Lane = /* */ 0b0000100000000000000000000000000;
113118

114119
export const SomeRetryLane: Lane = RetryLane1;
115120

116-
export const SelectiveHydrationLane: Lane = /* */ 0b0000100000000000000000000000000;
121+
export const SelectiveHydrationLane: Lane = /* */ 0b0001000000000000000000000000000;
117122

118-
const NonIdleLanes = /* */ 0b0000111111111111111111111111111;
123+
const NonIdleLanes = /* */ 0b0001111111111111111111111111111;
119124

120-
export const IdleHydrationLane: Lane = /* */ 0b0001000000000000000000000000000;
121-
const IdleLane: Lanes = /* */ 0b0010000000000000000000000000000;
125+
export const IdleHydrationLane: Lane = /* */ 0b0010000000000000000000000000000;
126+
const IdleLane: Lanes = /* */ 0b0100000000000000000000000000000;
122127

123128
export const OffscreenLane: Lane = /* */ 0b1000000000000000000000000000000;
124129

@@ -179,6 +184,11 @@ function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
179184
case TransitionLane7:
180185
case TransitionLane8:
181186
case TransitionLane9:
187+
case TransitionLane10:
188+
case TransitionLane11:
189+
case TransitionLane12:
190+
case TransitionLane13:
191+
case TransitionLane14:
182192
return_highestLanePriority = TransitionPriority;
183193
return lanes & TransitionLanes;
184194
case RetryLane1:

packages/react-reconciler/src/__tests__/DebugTracing-test.internal.js

+32-29
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ describe('DebugTracing', () => {
1616

1717
let logs;
1818

19+
const DEFAULT_LANE_STRING = '0b0000000000000000000000010000000';
20+
const RETRY_LANE_STRING = '0b0000000100000000000000000000000';
21+
1922
beforeEach(() => {
2023
jest.resetModules();
2124

@@ -129,9 +132,9 @@ describe('DebugTracing', () => {
129132
expect(Scheduler).toFlushUntilNextPaint([]);
130133

131134
expect(logs).toEqual([
132-
'group: ⚛️ render (0b0000000010000000000000000000000)',
135+
`group: ⚛️ render (${RETRY_LANE_STRING})`,
133136
'log: <Example/>',
134-
'groupEnd: ⚛️ render (0b0000000010000000000000000000000)',
137+
`groupEnd: ⚛️ render (${RETRY_LANE_STRING})`,
135138
]);
136139
});
137140

@@ -158,9 +161,9 @@ describe('DebugTracing', () => {
158161
expect(Scheduler).toFlushUntilNextPaint([]);
159162

160163
expect(logs).toEqual([
161-
'group: ⚛️ render (0b0000000000000000000001000000000)',
164+
`group: ⚛️ render (${DEFAULT_LANE_STRING})`,
162165
'log: ⚛️ Example suspended',
163-
'groupEnd: ⚛️ render (0b0000000000000000000001000000000)',
166+
`groupEnd: ⚛️ render (${DEFAULT_LANE_STRING})`,
164167
]);
165168

166169
logs.splice(0);
@@ -199,19 +202,19 @@ describe('DebugTracing', () => {
199202
expect(Scheduler).toFlushUntilNextPaint([]);
200203

201204
expect(logs).toEqual([
202-
'group: ⚛️ render (0b0000000000000000000001000000000)',
205+
`group: ⚛️ render (${DEFAULT_LANE_STRING})`,
203206
'log: <Wrapper/>',
204-
'groupEnd: ⚛️ render (0b0000000000000000000001000000000)',
207+
`groupEnd: ⚛️ render (${DEFAULT_LANE_STRING})`,
205208
]);
206209

207210
logs.splice(0);
208211

209212
expect(Scheduler).toFlushUntilNextPaint([]);
210213

211214
expect(logs).toEqual([
212-
'group: ⚛️ render (0b0000000010000000000000000000000)',
215+
`group: ⚛️ render (${RETRY_LANE_STRING})`,
213216
'log: <Example/>',
214-
'groupEnd: ⚛️ render (0b0000000010000000000000000000000)',
217+
`groupEnd: ⚛️ render (${RETRY_LANE_STRING})`,
215218
]);
216219
});
217220

@@ -241,11 +244,11 @@ describe('DebugTracing', () => {
241244
expect(Scheduler).toFlushUntilNextPaint([]);
242245

243246
expect(logs).toEqual([
244-
'group: ⚛️ commit (0b0000000000000000000001000000000)',
245-
'group: ⚛️ layout effects (0b0000000000000000000001000000000)',
247+
`group: ⚛️ commit (${DEFAULT_LANE_STRING})`,
248+
`group: ⚛️ layout effects (${DEFAULT_LANE_STRING})`,
246249
'log: ⚛️ Example updated state (0b0000000000000000000000000000001)',
247-
'groupEnd: ⚛️ layout effects (0b0000000000000000000001000000000)',
248-
'groupEnd: ⚛️ commit (0b0000000000000000000001000000000)',
250+
`groupEnd: ⚛️ layout effects (${DEFAULT_LANE_STRING})`,
251+
`groupEnd: ⚛️ commit (${DEFAULT_LANE_STRING})`,
249252
]);
250253
});
251254

@@ -277,10 +280,10 @@ describe('DebugTracing', () => {
277280
}).toErrorDev('Cannot update during an existing state transition');
278281

279282
expect(logs).toEqual([
280-
'group: ⚛️ render (0b0000000000000000000001000000000)',
281-
'log: ⚛️ Example updated state (0b0000000000000000000001000000000)',
282-
'log: ⚛️ Example updated state (0b0000000000000000000001000000000)',
283-
'groupEnd: ⚛️ render (0b0000000000000000000001000000000)',
283+
`group: ⚛️ render (${DEFAULT_LANE_STRING})`,
284+
`log: ⚛️ Example updated state (${DEFAULT_LANE_STRING})`,
285+
`log: ⚛️ Example updated state (${DEFAULT_LANE_STRING})`,
286+
`groupEnd: ⚛️ render (${DEFAULT_LANE_STRING})`,
284287
]);
285288
});
286289

@@ -308,11 +311,11 @@ describe('DebugTracing', () => {
308311
expect(Scheduler).toFlushUntilNextPaint([]);
309312

310313
expect(logs).toEqual([
311-
'group: ⚛️ commit (0b0000000000000000000001000000000)',
312-
'group: ⚛️ layout effects (0b0000000000000000000001000000000)',
314+
`group: ⚛️ commit (${DEFAULT_LANE_STRING})`,
315+
`group: ⚛️ layout effects (${DEFAULT_LANE_STRING})`,
313316
'log: ⚛️ Example updated state (0b0000000000000000000000000000001)',
314-
'groupEnd: ⚛️ layout effects (0b0000000000000000000001000000000)',
315-
'groupEnd: ⚛️ commit (0b0000000000000000000001000000000)',
317+
`groupEnd: ⚛️ layout effects (${DEFAULT_LANE_STRING})`,
318+
`groupEnd: ⚛️ commit (${DEFAULT_LANE_STRING})`,
316319
]);
317320
});
318321

@@ -335,9 +338,9 @@ describe('DebugTracing', () => {
335338
);
336339
});
337340
expect(logs).toEqual([
338-
'group: ⚛️ passive effects (0b0000000000000000000001000000000)',
339-
'log: ⚛️ Example updated state (0b0000000000000000000001000000000)',
340-
'groupEnd: ⚛️ passive effects (0b0000000000000000000001000000000)',
341+
`group: ⚛️ passive effects (${DEFAULT_LANE_STRING})`,
342+
`log: ⚛️ Example updated state (${DEFAULT_LANE_STRING})`,
343+
`groupEnd: ⚛️ passive effects (${DEFAULT_LANE_STRING})`,
341344
]);
342345
});
343346

@@ -361,10 +364,10 @@ describe('DebugTracing', () => {
361364
});
362365

363366
expect(logs).toEqual([
364-
'group: ⚛️ render (0b0000000000000000000001000000000)',
365-
'log: ⚛️ Example updated state (0b0000000000000000000001000000000)',
366-
'log: ⚛️ Example updated state (0b0000000000000000000001000000000)', // debugRenderPhaseSideEffectsForStrictMode
367-
'groupEnd: ⚛️ render (0b0000000000000000000001000000000)',
367+
`group: ⚛️ render (${DEFAULT_LANE_STRING})`,
368+
`log: ⚛️ Example updated state (${DEFAULT_LANE_STRING})`,
369+
`log: ⚛️ Example updated state (${DEFAULT_LANE_STRING})`, // debugRenderPhaseSideEffectsForStrictMode
370+
`groupEnd: ⚛️ render (${DEFAULT_LANE_STRING})`,
368371
]);
369372
});
370373

@@ -389,9 +392,9 @@ describe('DebugTracing', () => {
389392
expect(Scheduler).toFlushUntilNextPaint([]);
390393

391394
expect(logs).toEqual([
392-
'group: ⚛️ render (0b0000000000000000000001000000000)',
395+
`group: ⚛️ render (${DEFAULT_LANE_STRING})`,
393396
'log: Hello from user code',
394-
'groupEnd: ⚛️ render (0b0000000000000000000001000000000)',
397+
`groupEnd: ⚛️ render (${DEFAULT_LANE_STRING})`,
395398
]);
396399
});
397400

0 commit comments

Comments
 (0)