Compare commits

...

3 Commits

Author SHA1 Message Date
Sophie Alpert
4c67be212d Fix lint after automated replacements 2018-10-20 00:33:18 -07:00
Sophie Alpert
93e0bdf2ee Remove unnecessary comparisons
Ran these, then prettier, then these again.

```
codemod --accept-all -d packages -m '\(\s*([a-zA-Z.]+) === NoWork\s*\|\|\s*\1 (>=?) ([a-zA-Z.]+)\s*\)' '(\1 \2 \3)'
codemod --accept-all -d packages -m '\(\s*([a-zA-Z.]+) === NoWork\s*\|\|\s*([a-zA-Z.]+) (<=?) \1\s*\)' '(\2 \3 \1)'

codemod --accept-all -d packages -m '(?<![.\w])([a-zA-Z.]+) !== NoWork\s*&&\s*\1 (<) ([a-zA-Z.]+)' '\1 \2 \3'
codemod --accept-all -d packages -m '(?<![.\w])([a-zA-Z.]+) !== NoWork\s*&&\s*([a-zA-Z.]+) (>) \1' '\2 \3 \1'

codemod --accept-all -d packages -m '(?<![.\w])([a-zA-Z.]+) === NoWork\s*\|\|\s*\1 (>=?) ([a-zA-Z.]+)\s*\?\s' '\1 \2 \3 ? '
codemod --accept-all -d packages -m '(?<![.\w])([a-zA-Z.]+) === NoWork\s*\|\|\s*([a-zA-Z.]+) (<=?) \1\s*\?\s' '\2 \3 \1 ? '
```
2018-10-20 00:31:21 -07:00
Sophie Alpert
a684f09e58 Make NoWork big instead of small 2018-10-20 00:16:42 -07:00
7 changed files with 36 additions and 112 deletions

View File

@@ -243,11 +243,7 @@ function updatePureComponent(
) { ) {
const render = Component.render; const render = Component.render;
if ( if (current !== null && updateExpirationTime > renderExpirationTime) {
current !== null &&
(updateExpirationTime === NoWork ||
updateExpirationTime > renderExpirationTime)
) {
const prevProps = current.memoizedProps; const prevProps = current.memoizedProps;
// Default to shallow comparison // Default to shallow comparison
let compare = Component.compare; let compare = Component.compare;
@@ -1351,10 +1347,7 @@ function bailoutOnAlreadyFinishedWork(
// Check if the children have any pending work. // Check if the children have any pending work.
const childExpirationTime = workInProgress.childExpirationTime; const childExpirationTime = workInProgress.childExpirationTime;
if ( if (childExpirationTime > renderExpirationTime) {
childExpirationTime === NoWork ||
childExpirationTime > renderExpirationTime
) {
// The children don't have any work either. We can skip them. // The children don't have any work either. We can skip them.
// TODO: Once we add back resuming, we should check if the children are // TODO: Once we add back resuming, we should check if the children are
// a work-in-progress set. If so, we need to transfer their effects. // a work-in-progress set. If so, we need to transfer their effects.
@@ -1380,8 +1373,7 @@ function beginWork(
if ( if (
oldProps === newProps && oldProps === newProps &&
!hasLegacyContextChanged() && !hasLegacyContextChanged() &&
(updateExpirationTime === NoWork || updateExpirationTime > renderExpirationTime
updateExpirationTime > renderExpirationTime)
) { ) {
// This fiber does not have any pending work. Bailout without entering // This fiber does not have any pending work. Bailout without entering
// the begin phase. There's still some bookkeeping we that needs to be done // the begin phase. There's still some bookkeeping we that needs to be done

View File

@@ -11,9 +11,9 @@ import MAX_SIGNED_31_BIT_INT from './maxSigned31BitInt';
export type ExpirationTime = number; export type ExpirationTime = number;
export const NoWork = 0; export const NoWork = MAX_SIGNED_31_BIT_INT;
export const Sync = 1; export const Sync = 1;
export const Never = MAX_SIGNED_31_BIT_INT; export const Never = MAX_SIGNED_31_BIT_INT - 1;
const UNIT_SIZE = 10; const UNIT_SIZE = 10;
const MAGIC_NUMBER_OFFSET = 2; const MAGIC_NUMBER_OFFSET = 2;

View File

@@ -22,7 +22,6 @@ import warningWithoutStack from 'shared/warningWithoutStack';
import {isPrimaryRenderer} from './ReactFiberHostConfig'; import {isPrimaryRenderer} from './ReactFiberHostConfig';
import {createCursor, push, pop} from './ReactFiberStack'; import {createCursor, push, pop} from './ReactFiberStack';
import maxSigned31BitInt from './maxSigned31BitInt'; import maxSigned31BitInt from './maxSigned31BitInt';
import {NoWork} from './ReactFiberExpirationTime';
import { import {
ContextProvider, ContextProvider,
ClassComponent, ClassComponent,
@@ -177,17 +176,13 @@ export function propagateContextChange(
enqueueUpdate(fiber, update); enqueueUpdate(fiber, update);
} }
if ( if (fiber.expirationTime > renderExpirationTime) {
fiber.expirationTime === NoWork ||
fiber.expirationTime > renderExpirationTime
) {
fiber.expirationTime = renderExpirationTime; fiber.expirationTime = renderExpirationTime;
} }
let alternate = fiber.alternate; let alternate = fiber.alternate;
if ( if (
alternate !== null && alternate !== null &&
(alternate.expirationTime === NoWork || alternate.expirationTime > renderExpirationTime
alternate.expirationTime > renderExpirationTime)
) { ) {
alternate.expirationTime = renderExpirationTime; alternate.expirationTime = renderExpirationTime;
} }
@@ -196,22 +191,17 @@ export function propagateContextChange(
let node = fiber.return; let node = fiber.return;
while (node !== null) { while (node !== null) {
alternate = node.alternate; alternate = node.alternate;
if ( if (node.childExpirationTime > renderExpirationTime) {
node.childExpirationTime === NoWork ||
node.childExpirationTime > renderExpirationTime
) {
node.childExpirationTime = renderExpirationTime; node.childExpirationTime = renderExpirationTime;
if ( if (
alternate !== null && alternate !== null &&
(alternate.childExpirationTime === NoWork || alternate.childExpirationTime > renderExpirationTime
alternate.childExpirationTime > renderExpirationTime)
) { ) {
alternate.childExpirationTime = renderExpirationTime; alternate.childExpirationTime = renderExpirationTime;
} }
} else if ( } else if (
alternate !== null && alternate !== null &&
(alternate.childExpirationTime === NoWork || alternate.childExpirationTime > renderExpirationTime
alternate.childExpirationTime > renderExpirationTime)
) { ) {
alternate.childExpirationTime = renderExpirationTime; alternate.childExpirationTime = renderExpirationTime;
} else { } else {

View File

@@ -225,18 +225,10 @@ export function findEarliestOutstandingPriorityLevel(
const earliestPendingTime = root.earliestPendingTime; const earliestPendingTime = root.earliestPendingTime;
const earliestSuspendedTime = root.earliestSuspendedTime; const earliestSuspendedTime = root.earliestSuspendedTime;
if ( if (earliestPendingTime < earliestExpirationTime) {
earliestExpirationTime === NoWork ||
(earliestPendingTime !== NoWork &&
earliestPendingTime < earliestExpirationTime)
) {
earliestExpirationTime = earliestPendingTime; earliestExpirationTime = earliestPendingTime;
} }
if ( if (earliestSuspendedTime < earliestExpirationTime) {
earliestExpirationTime === NoWork ||
(earliestSuspendedTime !== NoWork &&
earliestSuspendedTime < earliestExpirationTime)
) {
earliestExpirationTime = earliestSuspendedTime; earliestExpirationTime = earliestSuspendedTime;
} }
return earliestExpirationTime; return earliestExpirationTime;
@@ -278,11 +270,7 @@ function findNextExpirationTimeToWorkOn(completedExpirationTime, root) {
} }
let expirationTime = nextExpirationTimeToWorkOn; let expirationTime = nextExpirationTimeToWorkOn;
if ( if (expirationTime !== NoWork && earliestSuspendedTime < expirationTime) {
expirationTime !== NoWork &&
earliestSuspendedTime !== NoWork &&
earliestSuspendedTime < expirationTime
) {
// Expire using the earliest known expiration time. // Expire using the earliest known expiration time.
expirationTime = earliestSuspendedTime; expirationTime = earliestSuspendedTime;
} }

View File

@@ -556,9 +556,7 @@ function commitRoot(root: FiberRoot, finishedWork: Fiber): void {
const updateExpirationTimeBeforeCommit = finishedWork.expirationTime; const updateExpirationTimeBeforeCommit = finishedWork.expirationTime;
const childExpirationTimeBeforeCommit = finishedWork.childExpirationTime; const childExpirationTimeBeforeCommit = finishedWork.childExpirationTime;
const earliestRemainingTimeBeforeCommit = const earliestRemainingTimeBeforeCommit =
updateExpirationTimeBeforeCommit === NoWork || childExpirationTimeBeforeCommit < updateExpirationTimeBeforeCommit
(childExpirationTimeBeforeCommit !== NoWork &&
childExpirationTimeBeforeCommit < updateExpirationTimeBeforeCommit)
? childExpirationTimeBeforeCommit ? childExpirationTimeBeforeCommit
: updateExpirationTimeBeforeCommit; : updateExpirationTimeBeforeCommit;
markCommittedPriorityLevels(root, earliestRemainingTimeBeforeCommit); markCommittedPriorityLevels(root, earliestRemainingTimeBeforeCommit);
@@ -733,9 +731,7 @@ function commitRoot(root: FiberRoot, finishedWork: Fiber): void {
const updateExpirationTimeAfterCommit = finishedWork.expirationTime; const updateExpirationTimeAfterCommit = finishedWork.expirationTime;
const childExpirationTimeAfterCommit = finishedWork.childExpirationTime; const childExpirationTimeAfterCommit = finishedWork.childExpirationTime;
const earliestRemainingTimeAfterCommit = const earliestRemainingTimeAfterCommit =
updateExpirationTimeAfterCommit === NoWork || childExpirationTimeAfterCommit < updateExpirationTimeAfterCommit
(childExpirationTimeAfterCommit !== NoWork &&
childExpirationTimeAfterCommit < updateExpirationTimeAfterCommit)
? childExpirationTimeAfterCommit ? childExpirationTimeAfterCommit
: updateExpirationTimeAfterCommit; : updateExpirationTimeAfterCommit;
if (earliestRemainingTimeAfterCommit === NoWork) { if (earliestRemainingTimeAfterCommit === NoWork) {
@@ -776,10 +772,7 @@ function commitRoot(root: FiberRoot, finishedWork: Fiber): void {
// Only decrement the pending interaction count if we're done. // Only decrement the pending interaction count if we're done.
// If there's still work at the current priority, // If there's still work at the current priority,
// That indicates that we are waiting for suspense data. // That indicates that we are waiting for suspense data.
if ( if (scheduledExpirationTime < earliestRemainingTimeAfterCommit) {
earliestRemainingTimeAfterCommit === NoWork ||
scheduledExpirationTime < earliestRemainingTimeAfterCommit
) {
pendingInteractionMap.delete(scheduledExpirationTime); pendingInteractionMap.delete(scheduledExpirationTime);
scheduledInteractions.forEach(interaction => { scheduledInteractions.forEach(interaction => {
@@ -839,18 +832,10 @@ function resetChildExpirationTime(
while (child !== null) { while (child !== null) {
const childUpdateExpirationTime = child.expirationTime; const childUpdateExpirationTime = child.expirationTime;
const childChildExpirationTime = child.childExpirationTime; const childChildExpirationTime = child.childExpirationTime;
if ( if (childUpdateExpirationTime < newChildExpirationTime) {
newChildExpirationTime === NoWork ||
(childUpdateExpirationTime !== NoWork &&
childUpdateExpirationTime < newChildExpirationTime)
) {
newChildExpirationTime = childUpdateExpirationTime; newChildExpirationTime = childUpdateExpirationTime;
} }
if ( if (childChildExpirationTime < newChildExpirationTime) {
newChildExpirationTime === NoWork ||
(childChildExpirationTime !== NoWork &&
childChildExpirationTime < newChildExpirationTime)
) {
newChildExpirationTime = childChildExpirationTime; newChildExpirationTime = childChildExpirationTime;
} }
if (shouldBubbleActualDurations) { if (shouldBubbleActualDurations) {
@@ -866,18 +851,10 @@ function resetChildExpirationTime(
while (child !== null) { while (child !== null) {
const childUpdateExpirationTime = child.expirationTime; const childUpdateExpirationTime = child.expirationTime;
const childChildExpirationTime = child.childExpirationTime; const childChildExpirationTime = child.childExpirationTime;
if ( if (childUpdateExpirationTime < newChildExpirationTime) {
newChildExpirationTime === NoWork ||
(childUpdateExpirationTime !== NoWork &&
childUpdateExpirationTime < newChildExpirationTime)
) {
newChildExpirationTime = childUpdateExpirationTime; newChildExpirationTime = childUpdateExpirationTime;
} }
if ( if (childChildExpirationTime < newChildExpirationTime) {
newChildExpirationTime === NoWork ||
(childChildExpirationTime !== NoWork &&
childChildExpirationTime < newChildExpirationTime)
) {
newChildExpirationTime = childChildExpirationTime; newChildExpirationTime = childChildExpirationTime;
} }
child = child.sibling; child = child.sibling;
@@ -1545,7 +1522,10 @@ function computeExpirationForFiber(currentTime: ExpirationTime, fiber: Fiber) {
// This is an interactive update. Keep track of the lowest pending // This is an interactive update. Keep track of the lowest pending
// interactive expiration time. This allows us to synchronously flush // interactive expiration time. This allows us to synchronously flush
// all interactive updates when needed. // all interactive updates when needed.
if (expirationTime > lowestPriorityPendingInteractiveExpirationTime) { if (
lowestPriorityPendingInteractiveExpirationTime === NoWork ||
expirationTime > lowestPriorityPendingInteractiveExpirationTime
) {
lowestPriorityPendingInteractiveExpirationTime = expirationTime; lowestPriorityPendingInteractiveExpirationTime = expirationTime;
} }
} }
@@ -1642,18 +1622,11 @@ function scheduleWorkToRoot(fiber: Fiber, expirationTime): FiberRoot | null {
} }
// Update the source fiber's expiration time // Update the source fiber's expiration time
if ( if (fiber.expirationTime > expirationTime) {
fiber.expirationTime === NoWork ||
fiber.expirationTime > expirationTime
) {
fiber.expirationTime = expirationTime; fiber.expirationTime = expirationTime;
} }
let alternate = fiber.alternate; let alternate = fiber.alternate;
if ( if (alternate !== null && alternate.expirationTime > expirationTime) {
alternate !== null &&
(alternate.expirationTime === NoWork ||
alternate.expirationTime > expirationTime)
) {
alternate.expirationTime = expirationTime; alternate.expirationTime = expirationTime;
} }
// Walk the parent path to the root and update the child expiration time. // Walk the parent path to the root and update the child expiration time.
@@ -1664,22 +1637,17 @@ function scheduleWorkToRoot(fiber: Fiber, expirationTime): FiberRoot | null {
} else { } else {
while (node !== null) { while (node !== null) {
alternate = node.alternate; alternate = node.alternate;
if ( if (node.childExpirationTime > expirationTime) {
node.childExpirationTime === NoWork ||
node.childExpirationTime > expirationTime
) {
node.childExpirationTime = expirationTime; node.childExpirationTime = expirationTime;
if ( if (
alternate !== null && alternate !== null &&
(alternate.childExpirationTime === NoWork || alternate.childExpirationTime > expirationTime
alternate.childExpirationTime > expirationTime)
) { ) {
alternate.childExpirationTime = expirationTime; alternate.childExpirationTime = expirationTime;
} }
} else if ( } else if (
alternate !== null && alternate !== null &&
(alternate.childExpirationTime === NoWork || alternate.childExpirationTime > expirationTime
alternate.childExpirationTime > expirationTime)
) { ) {
alternate.childExpirationTime = expirationTime; alternate.childExpirationTime = expirationTime;
} }
@@ -2028,10 +1996,7 @@ function addRootToSchedule(root: FiberRoot, expirationTime: ExpirationTime) {
} else { } else {
// This root is already scheduled, but its priority may have increased. // This root is already scheduled, but its priority may have increased.
const remainingExpirationTime = root.expirationTime; const remainingExpirationTime = root.expirationTime;
if ( if (expirationTime < remainingExpirationTime) {
remainingExpirationTime === NoWork ||
expirationTime < remainingExpirationTime
) {
// Update the priority. // Update the priority.
root.expirationTime = expirationTime; root.expirationTime = expirationTime;
} }
@@ -2080,10 +2045,7 @@ function findHighestPriorityRoot() {
} }
root = previousScheduledRoot.nextScheduledRoot; root = previousScheduledRoot.nextScheduledRoot;
} else { } else {
if ( if (remainingExpirationTime < highestPriorityWork) {
highestPriorityWork === NoWork ||
remainingExpirationTime < highestPriorityWork
) {
// Update the priority, if it's higher // Update the priority, if it's higher
highestPriorityWork = remainingExpirationTime; highestPriorityWork = remainingExpirationTime;
highestPriorityRoot = root; highestPriorityRoot = root;
@@ -2150,8 +2112,7 @@ function performWork(minExpirationTime: ExpirationTime, dl: Deadline | null) {
while ( while (
nextFlushedRoot !== null && nextFlushedRoot !== null &&
nextFlushedExpirationTime !== NoWork && nextFlushedExpirationTime !== NoWork &&
(minExpirationTime === NoWork || minExpirationTime >= nextFlushedExpirationTime &&
minExpirationTime >= nextFlushedExpirationTime) &&
(!deadlineDidExpire || currentRendererTime >= nextFlushedExpirationTime) (!deadlineDidExpire || currentRendererTime >= nextFlushedExpirationTime)
) { ) {
performWorkOnRoot( performWorkOnRoot(
@@ -2167,8 +2128,7 @@ function performWork(minExpirationTime: ExpirationTime, dl: Deadline | null) {
while ( while (
nextFlushedRoot !== null && nextFlushedRoot !== null &&
nextFlushedExpirationTime !== NoWork && nextFlushedExpirationTime !== NoWork &&
(minExpirationTime === NoWork || minExpirationTime >= nextFlushedExpirationTime
minExpirationTime >= nextFlushedExpirationTime)
) { ) {
performWorkOnRoot(nextFlushedRoot, nextFlushedExpirationTime, true); performWorkOnRoot(nextFlushedRoot, nextFlushedExpirationTime, true);
findHighestPriorityRoot(); findHighestPriorityRoot();

View File

@@ -437,10 +437,7 @@ export function processUpdateQueue<State>(
} }
// Since this update will remain in the list, update the remaining // Since this update will remain in the list, update the remaining
// expiration time. // expiration time.
if ( if (newExpirationTime > updateExpirationTime) {
newExpirationTime === NoWork ||
newExpirationTime > updateExpirationTime
) {
newExpirationTime = updateExpirationTime; newExpirationTime = updateExpirationTime;
} }
} else { } else {
@@ -490,10 +487,7 @@ export function processUpdateQueue<State>(
} }
// Since this update will remain in the list, update the remaining // Since this update will remain in the list, update the remaining
// expiration time. // expiration time.
if ( if (newExpirationTime > updateExpirationTime) {
newExpirationTime === NoWork ||
newExpirationTime > updateExpirationTime
) {
newExpirationTime = updateExpirationTime; newExpirationTime = updateExpirationTime;
} }
} else { } else {

View File

@@ -249,7 +249,7 @@ exports[`ReactDebugFiberPerf measures deprioritized work 1`] = `
⚛ (Committing Host Effects: 1 Total) ⚛ (Committing Host Effects: 1 Total)
⚛ (Calling Lifecycle Methods: 0 Total) ⚛ (Calling Lifecycle Methods: 0 Total)
⚛ (Waiting for async callback... will force flush in 10737418210 ms) ⚛ (Waiting for async callback... will force flush in 10737418200 ms)
// Flush the child // Flush the child
⚛ (React Tree Reconciliation: Completed Root) ⚛ (React Tree Reconciliation: Completed Root)