Skip to content

Commit a515122

Browse files
committed
Revert "Delete LanePriority type (facebook#21090)"
This reverts commit 26ddc63. No longer using LanePriority anywhere, so this deletes the remaining references.
1 parent ec03dcf commit a515122

File tree

2 files changed

+114
-0
lines changed

2 files changed

+114
-0
lines changed

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

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,28 @@ import {
2424
} from 'shared/ReactFeatureFlags';
2525
import {isDevToolsPresent} from './ReactFiberDevToolsHook.new';
2626

27+
export const SyncLanePriority: LanePriority = 12;
28+
29+
const InputContinuousHydrationLanePriority: LanePriority = 11;
30+
export const InputContinuousLanePriority: LanePriority = 10;
31+
32+
const DefaultHydrationLanePriority: LanePriority = 9;
33+
export const DefaultLanePriority: LanePriority = 8;
34+
35+
const TransitionHydrationPriority: LanePriority = 7;
36+
export const TransitionPriority: LanePriority = 6;
37+
38+
const RetryLanePriority: LanePriority = 5;
39+
40+
const SelectiveHydrationLanePriority: LanePriority = 4;
41+
42+
const IdleHydrationLanePriority: LanePriority = 3;
43+
export const IdleLanePriority: LanePriority = 2;
44+
45+
const OffscreenLanePriority: LanePriority = 1;
46+
47+
export const NoLanePriority: LanePriority = 0;
48+
2749
// Lane values below should be kept in sync with getLabelsForLanes(), used by react-devtools-scheduling-profiler.
2850
// If those values are changed that package should be rebuilt and redeployed.
2951

@@ -127,19 +149,29 @@ export const NoTimestamp = -1;
127149
let nextTransitionLane: Lane = TransitionLane1;
128150
let nextRetryLane: Lane = RetryLane1;
129151

152+
// "Registers" used to "return" multiple values
153+
// Used by getHighestPriorityLanes and getNextLanes:
154+
let return_highestLanePriority: LanePriority = DefaultLanePriority;
155+
130156
function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
131157
switch (getHighestPriorityLane(lanes)) {
132158
case SyncLane:
159+
return_highestLanePriority = SyncLanePriority;
133160
return SyncLane;
134161
case InputContinuousHydrationLane:
162+
return_highestLanePriority = InputContinuousHydrationLanePriority;
135163
return InputContinuousHydrationLane;
136164
case InputContinuousLane:
165+
return_highestLanePriority = InputContinuousLanePriority;
137166
return InputContinuousLane;
138167
case DefaultHydrationLane:
168+
return_highestLanePriority = DefaultHydrationLanePriority;
139169
return DefaultHydrationLane;
140170
case DefaultLane:
171+
return_highestLanePriority = DefaultLanePriority;
141172
return DefaultLane;
142173
case TransitionHydrationLane:
174+
return_highestLanePriority = TransitionHydrationPriority;
143175
return TransitionHydrationLane;
144176
case TransitionLane1:
145177
case TransitionLane2:
@@ -157,20 +189,26 @@ function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
157189
case TransitionLane14:
158190
case TransitionLane15:
159191
case TransitionLane16:
192+
return_highestLanePriority = TransitionPriority;
160193
return lanes & TransitionLanes;
161194
case RetryLane1:
162195
case RetryLane2:
163196
case RetryLane3:
164197
case RetryLane4:
165198
case RetryLane5:
199+
return_highestLanePriority = RetryLanePriority;
166200
return lanes & RetryLanes;
167201
case SelectiveHydrationLane:
202+
return_highestLanePriority = SelectiveHydrationLanePriority;
168203
return SelectiveHydrationLane;
169204
case IdleHydrationLane:
205+
return_highestLanePriority = IdleHydrationLanePriority;
170206
return IdleHydrationLane;
171207
case IdleLane:
208+
return_highestLanePriority = IdleLanePriority;
172209
return IdleLane;
173210
case OffscreenLane:
211+
return_highestLanePriority = OffscreenLanePriority;
174212
return OffscreenLane;
175213
default:
176214
if (__DEV__) {
@@ -179,6 +217,7 @@ function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
179217
);
180218
}
181219
// This shouldn't be reachable, but as a fallback, return the entire bitmask.
220+
return_highestLanePriority = DefaultLanePriority;
182221
return lanes;
183222
}
184223
}
@@ -187,10 +226,12 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
187226
// Early bailout if there's no pending work left.
188227
const pendingLanes = root.pendingLanes;
189228
if (pendingLanes === NoLanes) {
229+
return_highestLanePriority = NoLanePriority;
190230
return NoLanes;
191231
}
192232

193233
let nextLanes = NoLanes;
234+
let nextLanePriority = NoLanePriority;
194235

195236
const suspendedLanes = root.suspendedLanes;
196237
const pingedLanes = root.pingedLanes;
@@ -202,20 +243,24 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
202243
const nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;
203244
if (nonIdleUnblockedLanes !== NoLanes) {
204245
nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);
246+
nextLanePriority = return_highestLanePriority;
205247
} else {
206248
const nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;
207249
if (nonIdlePingedLanes !== NoLanes) {
208250
nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);
251+
nextLanePriority = return_highestLanePriority;
209252
}
210253
}
211254
} else {
212255
// The only remaining work is Idle.
213256
const unblockedLanes = pendingLanes & ~suspendedLanes;
214257
if (unblockedLanes !== NoLanes) {
215258
nextLanes = getHighestPriorityLanes(unblockedLanes);
259+
nextLanePriority = return_highestLanePriority;
216260
} else {
217261
if (pingedLanes !== NoLanes) {
218262
nextLanes = getHighestPriorityLanes(pingedLanes);
263+
nextLanePriority = return_highestLanePriority;
219264
}
220265
}
221266
}
@@ -249,6 +294,8 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
249294
) {
250295
// Keep working on the existing in-progress tree. Do not interrupt.
251296
return wipLanes;
297+
} else {
298+
return_highestLanePriority = nextLanePriority;
252299
}
253300
}
254301

@@ -443,6 +490,9 @@ export function getLanesToRetrySynchronouslyOnError(root: FiberRoot): Lanes {
443490
return NoLanes;
444491
}
445492

493+
export function returnNextLanesPriority() {
494+
return return_highestLanePriority;
495+
}
446496
export function includesNonIdleWork(lanes: Lanes) {
447497
return (lanes & NonIdleLanes) !== NoLanes;
448498
}
@@ -548,6 +598,13 @@ export function higherPriorityLane(a: Lane, b: Lane) {
548598
return a !== NoLane && a < b ? a : b;
549599
}
550600

601+
export function higherLanePriority(
602+
a: LanePriority,
603+
b: LanePriority,
604+
): LanePriority {
605+
return a !== NoLanePriority && a > b ? a : b;
606+
}
607+
551608
export function createLaneMap<T>(initial: T): LaneMap<T> {
552609
// Intentionally pushing one by one.
553610
// https://v8.dev/blog/elements-kinds#avoid-creating-holes

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

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,28 @@ import {
2424
} from 'shared/ReactFeatureFlags';
2525
import {isDevToolsPresent} from './ReactFiberDevToolsHook.old';
2626

27+
export const SyncLanePriority: LanePriority = 12;
28+
29+
const InputContinuousHydrationLanePriority: LanePriority = 11;
30+
export const InputContinuousLanePriority: LanePriority = 10;
31+
32+
const DefaultHydrationLanePriority: LanePriority = 9;
33+
export const DefaultLanePriority: LanePriority = 8;
34+
35+
const TransitionHydrationPriority: LanePriority = 7;
36+
export const TransitionPriority: LanePriority = 6;
37+
38+
const RetryLanePriority: LanePriority = 5;
39+
40+
const SelectiveHydrationLanePriority: LanePriority = 4;
41+
42+
const IdleHydrationLanePriority: LanePriority = 3;
43+
export const IdleLanePriority: LanePriority = 2;
44+
45+
const OffscreenLanePriority: LanePriority = 1;
46+
47+
export const NoLanePriority: LanePriority = 0;
48+
2749
// Lane values below should be kept in sync with getLabelsForLanes(), used by react-devtools-scheduling-profiler.
2850
// If those values are changed that package should be rebuilt and redeployed.
2951

@@ -127,19 +149,29 @@ export const NoTimestamp = -1;
127149
let nextTransitionLane: Lane = TransitionLane1;
128150
let nextRetryLane: Lane = RetryLane1;
129151

152+
// "Registers" used to "return" multiple values
153+
// Used by getHighestPriorityLanes and getNextLanes:
154+
let return_highestLanePriority: LanePriority = DefaultLanePriority;
155+
130156
function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
131157
switch (getHighestPriorityLane(lanes)) {
132158
case SyncLane:
159+
return_highestLanePriority = SyncLanePriority;
133160
return SyncLane;
134161
case InputContinuousHydrationLane:
162+
return_highestLanePriority = InputContinuousHydrationLanePriority;
135163
return InputContinuousHydrationLane;
136164
case InputContinuousLane:
165+
return_highestLanePriority = InputContinuousLanePriority;
137166
return InputContinuousLane;
138167
case DefaultHydrationLane:
168+
return_highestLanePriority = DefaultHydrationLanePriority;
139169
return DefaultHydrationLane;
140170
case DefaultLane:
171+
return_highestLanePriority = DefaultLanePriority;
141172
return DefaultLane;
142173
case TransitionHydrationLane:
174+
return_highestLanePriority = TransitionHydrationPriority;
143175
return TransitionHydrationLane;
144176
case TransitionLane1:
145177
case TransitionLane2:
@@ -157,20 +189,26 @@ function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
157189
case TransitionLane14:
158190
case TransitionLane15:
159191
case TransitionLane16:
192+
return_highestLanePriority = TransitionPriority;
160193
return lanes & TransitionLanes;
161194
case RetryLane1:
162195
case RetryLane2:
163196
case RetryLane3:
164197
case RetryLane4:
165198
case RetryLane5:
199+
return_highestLanePriority = RetryLanePriority;
166200
return lanes & RetryLanes;
167201
case SelectiveHydrationLane:
202+
return_highestLanePriority = SelectiveHydrationLanePriority;
168203
return SelectiveHydrationLane;
169204
case IdleHydrationLane:
205+
return_highestLanePriority = IdleHydrationLanePriority;
170206
return IdleHydrationLane;
171207
case IdleLane:
208+
return_highestLanePriority = IdleLanePriority;
172209
return IdleLane;
173210
case OffscreenLane:
211+
return_highestLanePriority = OffscreenLanePriority;
174212
return OffscreenLane;
175213
default:
176214
if (__DEV__) {
@@ -179,6 +217,7 @@ function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
179217
);
180218
}
181219
// This shouldn't be reachable, but as a fallback, return the entire bitmask.
220+
return_highestLanePriority = DefaultLanePriority;
182221
return lanes;
183222
}
184223
}
@@ -187,10 +226,12 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
187226
// Early bailout if there's no pending work left.
188227
const pendingLanes = root.pendingLanes;
189228
if (pendingLanes === NoLanes) {
229+
return_highestLanePriority = NoLanePriority;
190230
return NoLanes;
191231
}
192232

193233
let nextLanes = NoLanes;
234+
let nextLanePriority = NoLanePriority;
194235

195236
const suspendedLanes = root.suspendedLanes;
196237
const pingedLanes = root.pingedLanes;
@@ -202,20 +243,24 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
202243
const nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;
203244
if (nonIdleUnblockedLanes !== NoLanes) {
204245
nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);
246+
nextLanePriority = return_highestLanePriority;
205247
} else {
206248
const nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;
207249
if (nonIdlePingedLanes !== NoLanes) {
208250
nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);
251+
nextLanePriority = return_highestLanePriority;
209252
}
210253
}
211254
} else {
212255
// The only remaining work is Idle.
213256
const unblockedLanes = pendingLanes & ~suspendedLanes;
214257
if (unblockedLanes !== NoLanes) {
215258
nextLanes = getHighestPriorityLanes(unblockedLanes);
259+
nextLanePriority = return_highestLanePriority;
216260
} else {
217261
if (pingedLanes !== NoLanes) {
218262
nextLanes = getHighestPriorityLanes(pingedLanes);
263+
nextLanePriority = return_highestLanePriority;
219264
}
220265
}
221266
}
@@ -249,6 +294,8 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
249294
) {
250295
// Keep working on the existing in-progress tree. Do not interrupt.
251296
return wipLanes;
297+
} else {
298+
return_highestLanePriority = nextLanePriority;
252299
}
253300
}
254301

@@ -443,6 +490,9 @@ export function getLanesToRetrySynchronouslyOnError(root: FiberRoot): Lanes {
443490
return NoLanes;
444491
}
445492

493+
export function returnNextLanesPriority() {
494+
return return_highestLanePriority;
495+
}
446496
export function includesNonIdleWork(lanes: Lanes) {
447497
return (lanes & NonIdleLanes) !== NoLanes;
448498
}
@@ -548,6 +598,13 @@ export function higherPriorityLane(a: Lane, b: Lane) {
548598
return a !== NoLane && a < b ? a : b;
549599
}
550600

601+
export function higherLanePriority(
602+
a: LanePriority,
603+
b: LanePriority,
604+
): LanePriority {
605+
return a !== NoLanePriority && a > b ? a : b;
606+
}
607+
551608
export function createLaneMap<T>(initial: T): LaneMap<T> {
552609
// Intentionally pushing one by one.
553610
// https://v8.dev/blog/elements-kinds#avoid-creating-holes

0 commit comments

Comments
 (0)