mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Re-land "Delete LanePriority type (#21090)"
This re-lands commit 26ddc63f2dcc8e7dcbacf498237a2bb1e28a7d23.
This commit is contained in:
@@ -11,25 +11,6 @@ import type {FiberRoot} from './ReactInternalTypes';
|
||||
|
||||
// TODO: Ideally these types would be opaque but that doesn't work well with
|
||||
// our reconciler fork infra, since these leak into non-reconciler packages.
|
||||
export type LanePriority =
|
||||
| 0
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
| 4
|
||||
| 5
|
||||
| 6
|
||||
| 7
|
||||
| 8
|
||||
| 9
|
||||
| 10
|
||||
| 11
|
||||
| 12
|
||||
| 13
|
||||
| 14
|
||||
| 15
|
||||
| 16
|
||||
| 17;
|
||||
|
||||
export type Lanes = number;
|
||||
export type Lane = number;
|
||||
@@ -44,28 +25,6 @@ import {
|
||||
import {isDevToolsPresent} from './ReactFiberDevToolsHook.new';
|
||||
import {ConcurrentUpdatesByDefaultMode, NoMode} from './ReactTypeOfMode';
|
||||
|
||||
export const SyncLanePriority: LanePriority = 12;
|
||||
|
||||
const InputContinuousHydrationLanePriority: LanePriority = 11;
|
||||
export const InputContinuousLanePriority: LanePriority = 10;
|
||||
|
||||
const DefaultHydrationLanePriority: LanePriority = 9;
|
||||
export const DefaultLanePriority: LanePriority = 8;
|
||||
|
||||
const TransitionHydrationPriority: LanePriority = 7;
|
||||
export const TransitionPriority: LanePriority = 6;
|
||||
|
||||
const RetryLanePriority: LanePriority = 5;
|
||||
|
||||
const SelectiveHydrationLanePriority: LanePriority = 4;
|
||||
|
||||
const IdleHydrationLanePriority: LanePriority = 3;
|
||||
export const IdleLanePriority: LanePriority = 2;
|
||||
|
||||
const OffscreenLanePriority: LanePriority = 1;
|
||||
|
||||
export const NoLanePriority: LanePriority = 0;
|
||||
|
||||
// Lane values below should be kept in sync with getLabelsForLanes(), used by react-devtools-scheduling-profiler.
|
||||
// If those values are changed that package should be rebuilt and redeployed.
|
||||
|
||||
@@ -169,29 +128,19 @@ export const NoTimestamp = -1;
|
||||
let nextTransitionLane: Lane = TransitionLane1;
|
||||
let nextRetryLane: Lane = RetryLane1;
|
||||
|
||||
// "Registers" used to "return" multiple values
|
||||
// Used by getHighestPriorityLanes and getNextLanes:
|
||||
let return_highestLanePriority: LanePriority = DefaultLanePriority;
|
||||
|
||||
function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
|
||||
switch (getHighestPriorityLane(lanes)) {
|
||||
case SyncLane:
|
||||
return_highestLanePriority = SyncLanePriority;
|
||||
return SyncLane;
|
||||
case InputContinuousHydrationLane:
|
||||
return_highestLanePriority = InputContinuousHydrationLanePriority;
|
||||
return InputContinuousHydrationLane;
|
||||
case InputContinuousLane:
|
||||
return_highestLanePriority = InputContinuousLanePriority;
|
||||
return InputContinuousLane;
|
||||
case DefaultHydrationLane:
|
||||
return_highestLanePriority = DefaultHydrationLanePriority;
|
||||
return DefaultHydrationLane;
|
||||
case DefaultLane:
|
||||
return_highestLanePriority = DefaultLanePriority;
|
||||
return DefaultLane;
|
||||
case TransitionHydrationLane:
|
||||
return_highestLanePriority = TransitionHydrationPriority;
|
||||
return TransitionHydrationLane;
|
||||
case TransitionLane1:
|
||||
case TransitionLane2:
|
||||
@@ -209,26 +158,20 @@ function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
|
||||
case TransitionLane14:
|
||||
case TransitionLane15:
|
||||
case TransitionLane16:
|
||||
return_highestLanePriority = TransitionPriority;
|
||||
return lanes & TransitionLanes;
|
||||
case RetryLane1:
|
||||
case RetryLane2:
|
||||
case RetryLane3:
|
||||
case RetryLane4:
|
||||
case RetryLane5:
|
||||
return_highestLanePriority = RetryLanePriority;
|
||||
return lanes & RetryLanes;
|
||||
case SelectiveHydrationLane:
|
||||
return_highestLanePriority = SelectiveHydrationLanePriority;
|
||||
return SelectiveHydrationLane;
|
||||
case IdleHydrationLane:
|
||||
return_highestLanePriority = IdleHydrationLanePriority;
|
||||
return IdleHydrationLane;
|
||||
case IdleLane:
|
||||
return_highestLanePriority = IdleLanePriority;
|
||||
return IdleLane;
|
||||
case OffscreenLane:
|
||||
return_highestLanePriority = OffscreenLanePriority;
|
||||
return OffscreenLane;
|
||||
default:
|
||||
if (__DEV__) {
|
||||
@@ -237,7 +180,6 @@ function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
|
||||
);
|
||||
}
|
||||
// This shouldn't be reachable, but as a fallback, return the entire bitmask.
|
||||
return_highestLanePriority = DefaultLanePriority;
|
||||
return lanes;
|
||||
}
|
||||
}
|
||||
@@ -246,12 +188,10 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
|
||||
// Early bailout if there's no pending work left.
|
||||
const pendingLanes = root.pendingLanes;
|
||||
if (pendingLanes === NoLanes) {
|
||||
return_highestLanePriority = NoLanePriority;
|
||||
return NoLanes;
|
||||
}
|
||||
|
||||
let nextLanes = NoLanes;
|
||||
let nextLanePriority = NoLanePriority;
|
||||
|
||||
const suspendedLanes = root.suspendedLanes;
|
||||
const pingedLanes = root.pingedLanes;
|
||||
@@ -263,12 +203,10 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
|
||||
const nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;
|
||||
if (nonIdleUnblockedLanes !== NoLanes) {
|
||||
nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);
|
||||
nextLanePriority = return_highestLanePriority;
|
||||
} else {
|
||||
const nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;
|
||||
if (nonIdlePingedLanes !== NoLanes) {
|
||||
nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);
|
||||
nextLanePriority = return_highestLanePriority;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -276,11 +214,9 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
|
||||
const unblockedLanes = pendingLanes & ~suspendedLanes;
|
||||
if (unblockedLanes !== NoLanes) {
|
||||
nextLanes = getHighestPriorityLanes(unblockedLanes);
|
||||
nextLanePriority = return_highestLanePriority;
|
||||
} else {
|
||||
if (pingedLanes !== NoLanes) {
|
||||
nextLanes = getHighestPriorityLanes(pingedLanes);
|
||||
nextLanePriority = return_highestLanePriority;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -314,8 +250,6 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
|
||||
) {
|
||||
// Keep working on the existing in-progress tree. Do not interrupt.
|
||||
return wipLanes;
|
||||
} else {
|
||||
return_highestLanePriority = nextLanePriority;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -511,9 +445,6 @@ export function getLanesToRetrySynchronouslyOnError(root: FiberRoot): Lanes {
|
||||
return NoLanes;
|
||||
}
|
||||
|
||||
export function returnNextLanesPriority() {
|
||||
return return_highestLanePriority;
|
||||
}
|
||||
export function includesNonIdleWork(lanes: Lanes) {
|
||||
return (lanes & NonIdleLanes) !== NoLanes;
|
||||
}
|
||||
@@ -623,13 +554,6 @@ export function higherPriorityLane(a: Lane, b: Lane) {
|
||||
return a !== NoLane && a < b ? a : b;
|
||||
}
|
||||
|
||||
export function higherLanePriority(
|
||||
a: LanePriority,
|
||||
b: LanePriority,
|
||||
): LanePriority {
|
||||
return a !== NoLanePriority && a > b ? a : b;
|
||||
}
|
||||
|
||||
export function createLaneMap<T>(initial: T): LaneMap<T> {
|
||||
// Intentionally pushing one by one.
|
||||
// https://v8.dev/blog/elements-kinds#avoid-creating-holes
|
||||
|
||||
@@ -11,25 +11,6 @@ import type {FiberRoot} from './ReactInternalTypes';
|
||||
|
||||
// TODO: Ideally these types would be opaque but that doesn't work well with
|
||||
// our reconciler fork infra, since these leak into non-reconciler packages.
|
||||
export type LanePriority =
|
||||
| 0
|
||||
| 1
|
||||
| 2
|
||||
| 3
|
||||
| 4
|
||||
| 5
|
||||
| 6
|
||||
| 7
|
||||
| 8
|
||||
| 9
|
||||
| 10
|
||||
| 11
|
||||
| 12
|
||||
| 13
|
||||
| 14
|
||||
| 15
|
||||
| 16
|
||||
| 17;
|
||||
|
||||
export type Lanes = number;
|
||||
export type Lane = number;
|
||||
@@ -44,28 +25,6 @@ import {
|
||||
import {isDevToolsPresent} from './ReactFiberDevToolsHook.old';
|
||||
import {ConcurrentUpdatesByDefaultMode, NoMode} from './ReactTypeOfMode';
|
||||
|
||||
export const SyncLanePriority: LanePriority = 12;
|
||||
|
||||
const InputContinuousHydrationLanePriority: LanePriority = 11;
|
||||
export const InputContinuousLanePriority: LanePriority = 10;
|
||||
|
||||
const DefaultHydrationLanePriority: LanePriority = 9;
|
||||
export const DefaultLanePriority: LanePriority = 8;
|
||||
|
||||
const TransitionHydrationPriority: LanePriority = 7;
|
||||
export const TransitionPriority: LanePriority = 6;
|
||||
|
||||
const RetryLanePriority: LanePriority = 5;
|
||||
|
||||
const SelectiveHydrationLanePriority: LanePriority = 4;
|
||||
|
||||
const IdleHydrationLanePriority: LanePriority = 3;
|
||||
export const IdleLanePriority: LanePriority = 2;
|
||||
|
||||
const OffscreenLanePriority: LanePriority = 1;
|
||||
|
||||
export const NoLanePriority: LanePriority = 0;
|
||||
|
||||
// Lane values below should be kept in sync with getLabelsForLanes(), used by react-devtools-scheduling-profiler.
|
||||
// If those values are changed that package should be rebuilt and redeployed.
|
||||
|
||||
@@ -169,29 +128,19 @@ export const NoTimestamp = -1;
|
||||
let nextTransitionLane: Lane = TransitionLane1;
|
||||
let nextRetryLane: Lane = RetryLane1;
|
||||
|
||||
// "Registers" used to "return" multiple values
|
||||
// Used by getHighestPriorityLanes and getNextLanes:
|
||||
let return_highestLanePriority: LanePriority = DefaultLanePriority;
|
||||
|
||||
function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
|
||||
switch (getHighestPriorityLane(lanes)) {
|
||||
case SyncLane:
|
||||
return_highestLanePriority = SyncLanePriority;
|
||||
return SyncLane;
|
||||
case InputContinuousHydrationLane:
|
||||
return_highestLanePriority = InputContinuousHydrationLanePriority;
|
||||
return InputContinuousHydrationLane;
|
||||
case InputContinuousLane:
|
||||
return_highestLanePriority = InputContinuousLanePriority;
|
||||
return InputContinuousLane;
|
||||
case DefaultHydrationLane:
|
||||
return_highestLanePriority = DefaultHydrationLanePriority;
|
||||
return DefaultHydrationLane;
|
||||
case DefaultLane:
|
||||
return_highestLanePriority = DefaultLanePriority;
|
||||
return DefaultLane;
|
||||
case TransitionHydrationLane:
|
||||
return_highestLanePriority = TransitionHydrationPriority;
|
||||
return TransitionHydrationLane;
|
||||
case TransitionLane1:
|
||||
case TransitionLane2:
|
||||
@@ -209,26 +158,20 @@ function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
|
||||
case TransitionLane14:
|
||||
case TransitionLane15:
|
||||
case TransitionLane16:
|
||||
return_highestLanePriority = TransitionPriority;
|
||||
return lanes & TransitionLanes;
|
||||
case RetryLane1:
|
||||
case RetryLane2:
|
||||
case RetryLane3:
|
||||
case RetryLane4:
|
||||
case RetryLane5:
|
||||
return_highestLanePriority = RetryLanePriority;
|
||||
return lanes & RetryLanes;
|
||||
case SelectiveHydrationLane:
|
||||
return_highestLanePriority = SelectiveHydrationLanePriority;
|
||||
return SelectiveHydrationLane;
|
||||
case IdleHydrationLane:
|
||||
return_highestLanePriority = IdleHydrationLanePriority;
|
||||
return IdleHydrationLane;
|
||||
case IdleLane:
|
||||
return_highestLanePriority = IdleLanePriority;
|
||||
return IdleLane;
|
||||
case OffscreenLane:
|
||||
return_highestLanePriority = OffscreenLanePriority;
|
||||
return OffscreenLane;
|
||||
default:
|
||||
if (__DEV__) {
|
||||
@@ -237,7 +180,6 @@ function getHighestPriorityLanes(lanes: Lanes | Lane): Lanes {
|
||||
);
|
||||
}
|
||||
// This shouldn't be reachable, but as a fallback, return the entire bitmask.
|
||||
return_highestLanePriority = DefaultLanePriority;
|
||||
return lanes;
|
||||
}
|
||||
}
|
||||
@@ -246,12 +188,10 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
|
||||
// Early bailout if there's no pending work left.
|
||||
const pendingLanes = root.pendingLanes;
|
||||
if (pendingLanes === NoLanes) {
|
||||
return_highestLanePriority = NoLanePriority;
|
||||
return NoLanes;
|
||||
}
|
||||
|
||||
let nextLanes = NoLanes;
|
||||
let nextLanePriority = NoLanePriority;
|
||||
|
||||
const suspendedLanes = root.suspendedLanes;
|
||||
const pingedLanes = root.pingedLanes;
|
||||
@@ -263,12 +203,10 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
|
||||
const nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;
|
||||
if (nonIdleUnblockedLanes !== NoLanes) {
|
||||
nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);
|
||||
nextLanePriority = return_highestLanePriority;
|
||||
} else {
|
||||
const nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;
|
||||
if (nonIdlePingedLanes !== NoLanes) {
|
||||
nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);
|
||||
nextLanePriority = return_highestLanePriority;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -276,11 +214,9 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
|
||||
const unblockedLanes = pendingLanes & ~suspendedLanes;
|
||||
if (unblockedLanes !== NoLanes) {
|
||||
nextLanes = getHighestPriorityLanes(unblockedLanes);
|
||||
nextLanePriority = return_highestLanePriority;
|
||||
} else {
|
||||
if (pingedLanes !== NoLanes) {
|
||||
nextLanes = getHighestPriorityLanes(pingedLanes);
|
||||
nextLanePriority = return_highestLanePriority;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -314,8 +250,6 @@ export function getNextLanes(root: FiberRoot, wipLanes: Lanes): Lanes {
|
||||
) {
|
||||
// Keep working on the existing in-progress tree. Do not interrupt.
|
||||
return wipLanes;
|
||||
} else {
|
||||
return_highestLanePriority = nextLanePriority;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -511,9 +445,6 @@ export function getLanesToRetrySynchronouslyOnError(root: FiberRoot): Lanes {
|
||||
return NoLanes;
|
||||
}
|
||||
|
||||
export function returnNextLanesPriority() {
|
||||
return return_highestLanePriority;
|
||||
}
|
||||
export function includesNonIdleWork(lanes: Lanes) {
|
||||
return (lanes & NonIdleLanes) !== NoLanes;
|
||||
}
|
||||
@@ -623,13 +554,6 @@ export function higherPriorityLane(a: Lane, b: Lane) {
|
||||
return a !== NoLane && a < b ? a : b;
|
||||
}
|
||||
|
||||
export function higherLanePriority(
|
||||
a: LanePriority,
|
||||
b: LanePriority,
|
||||
): LanePriority {
|
||||
return a !== NoLanePriority && a > b ? a : b;
|
||||
}
|
||||
|
||||
export function createLaneMap<T>(initial: T): LaneMap<T> {
|
||||
// Intentionally pushing one by one.
|
||||
// https://v8.dev/blog/elements-kinds#avoid-creating-holes
|
||||
|
||||
Reference in New Issue
Block a user