From d0c3ae40a5584bd04f08abd70e53c8e1c7c3ca4d Mon Sep 17 00:00:00 2001 From: bubucuo <276185876@qq.com> Date: Sun, 16 Oct 2022 12:57:35 +0800 Subject: [PATCH 1/3] refactor: Flow: typing of Scheduler Flow: typing of Scheduler . maybe Scheduler needs more typing --- packages/scheduler/src/forks/Scheduler.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/scheduler/src/forks/Scheduler.js b/packages/scheduler/src/forks/Scheduler.js index 22c70f5848..3c6cacbdea 100644 --- a/packages/scheduler/src/forks/Scheduler.js +++ b/packages/scheduler/src/forks/Scheduler.js @@ -85,8 +85,8 @@ var LOW_PRIORITY_TIMEOUT = 10000; var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap -var taskQueue = []; -var timerQueue = []; +var taskQueue: Array = []; +var timerQueue: Array = []; // Incrementing id counter. Used to maintain insertion order. var taskIdCounter = 1; @@ -121,7 +121,7 @@ const isInputPending = const continuousOptions = {includeContinuous: enableIsInputPendingContinuous}; -function advanceTimers(currentTime) { +function advanceTimers(currentTime: number) { // Check for tasks that are no longer delayed and add them to the queue. let timer = peek(timerQueue); while (timer !== null) { @@ -145,7 +145,7 @@ function advanceTimers(currentTime) { } } -function handleTimeout(currentTime) { +function handleTimeout(currentTime: number) { isHostTimeoutScheduled = false; advanceTimers(currentTime); @@ -162,7 +162,7 @@ function handleTimeout(currentTime) { } } -function flushWork(hasTimeRemaining, initialTime) { +function flushWork(hasTimeRemaining: boolean, initialTime: number) { if (enableProfiling) { markSchedulerUnsuspended(initialTime); } @@ -206,7 +206,7 @@ function flushWork(hasTimeRemaining, initialTime) { } } -function workLoop(hasTimeRemaining, initialTime) { +function workLoop(hasTimeRemaining: boolean, initialTime: number) { let currentTime = initialTime; advanceTimers(currentTime); currentTask = peek(taskQueue); From f0f8da61bb780e81b3766ad6d2c1f674b2314585 Mon Sep 17 00:00:00 2001 From: bubucuo <276185876@qq.com> Date: Sun, 16 Oct 2022 12:57:35 +0800 Subject: [PATCH 2/3] refactor: Flow: typing of Scheduler Flow: typing of Scheduler . maybe Scheduler needs more typing --- packages/scheduler/src/forks/Scheduler.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/scheduler/src/forks/Scheduler.js b/packages/scheduler/src/forks/Scheduler.js index 22c70f5848..3c6cacbdea 100644 --- a/packages/scheduler/src/forks/Scheduler.js +++ b/packages/scheduler/src/forks/Scheduler.js @@ -85,8 +85,8 @@ var LOW_PRIORITY_TIMEOUT = 10000; var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap -var taskQueue = []; -var timerQueue = []; +var taskQueue: Array = []; +var timerQueue: Array = []; // Incrementing id counter. Used to maintain insertion order. var taskIdCounter = 1; @@ -121,7 +121,7 @@ const isInputPending = const continuousOptions = {includeContinuous: enableIsInputPendingContinuous}; -function advanceTimers(currentTime) { +function advanceTimers(currentTime: number) { // Check for tasks that are no longer delayed and add them to the queue. let timer = peek(timerQueue); while (timer !== null) { @@ -145,7 +145,7 @@ function advanceTimers(currentTime) { } } -function handleTimeout(currentTime) { +function handleTimeout(currentTime: number) { isHostTimeoutScheduled = false; advanceTimers(currentTime); @@ -162,7 +162,7 @@ function handleTimeout(currentTime) { } } -function flushWork(hasTimeRemaining, initialTime) { +function flushWork(hasTimeRemaining: boolean, initialTime: number) { if (enableProfiling) { markSchedulerUnsuspended(initialTime); } @@ -206,7 +206,7 @@ function flushWork(hasTimeRemaining, initialTime) { } } -function workLoop(hasTimeRemaining, initialTime) { +function workLoop(hasTimeRemaining: boolean, initialTime: number) { let currentTime = initialTime; advanceTimers(currentTime); currentTask = peek(taskQueue); From 32941e81c9877a1b4cfa6bfaca784d77521d325f Mon Sep 17 00:00:00 2001 From: bubucuo <276185876@qq.com> Date: Mon, 24 Oct 2022 09:23:17 +0800 Subject: [PATCH 3/3] [cleanup]: meaningless hasTimeRemaining should be removed 'hasTimeRemaining' was set true as a constant, and never changed it. So 'workLoop' function should skip it. --- packages/scheduler/src/forks/Scheduler.js | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/packages/scheduler/src/forks/Scheduler.js b/packages/scheduler/src/forks/Scheduler.js index d43f457c2d..06255b175a 100644 --- a/packages/scheduler/src/forks/Scheduler.js +++ b/packages/scheduler/src/forks/Scheduler.js @@ -162,7 +162,7 @@ function handleTimeout(currentTime: number) { } } -function flushWork(hasTimeRemaining: boolean, initialTime: number) { +function flushWork(initialTime: number) { if (enableProfiling) { markSchedulerUnsuspended(initialTime); } @@ -180,7 +180,7 @@ function flushWork(hasTimeRemaining: boolean, initialTime: number) { try { if (enableProfiling) { try { - return workLoop(hasTimeRemaining, initialTime); + return workLoop(initialTime); } catch (error) { if (currentTask !== null) { const currentTime = getCurrentTime(); @@ -193,7 +193,7 @@ function flushWork(hasTimeRemaining: boolean, initialTime: number) { } } else { // No catch in prod code path. - return workLoop(hasTimeRemaining, initialTime); + return workLoop(initialTime); } } finally { currentTask = null; @@ -206,7 +206,7 @@ function flushWork(hasTimeRemaining: boolean, initialTime: number) { } } -function workLoop(hasTimeRemaining: boolean, initialTime: number) { +function workLoop(initialTime: number) { let currentTime = initialTime; advanceTimers(currentTime); currentTask = peek(taskQueue); @@ -214,10 +214,7 @@ function workLoop(hasTimeRemaining: boolean, initialTime: number) { currentTask !== null && !(enableSchedulerDebugging && isSchedulerPaused) ) { - if ( - currentTask.expirationTime > currentTime && - (!hasTimeRemaining || shouldYieldToHost()) - ) { + if (currentTask.expirationTime > currentTime && shouldYieldToHost()) { // This currentTask hasn't expired, and we've reached the deadline. break; } @@ -466,10 +463,7 @@ function unstable_getCurrentPriorityLevel(): PriorityLevel { let isMessageLoopRunning = false; let scheduledHostCallback: | null - | (( - hasTimeRemaining: boolean, - initialTime: DOMHighResTimeStamp | number, - ) => boolean) = null; + | ((initialTime: DOMHighResTimeStamp | number) => boolean) = null; let taskTimeoutID: TimeoutID = (-1: any); // Scheduler periodically yields in case there is other work on the main @@ -566,7 +560,6 @@ const performWorkUntilDeadline = () => { // Keep track of the start time so we can measure how long the main thread // has been blocked. startTime = currentTime; - const hasTimeRemaining = true; // If a scheduler task throws, exit the current browser task so the // error can be observed. @@ -577,7 +570,7 @@ const performWorkUntilDeadline = () => { let hasMoreWork = true; try { // $FlowFixMe[not-a-function] found when upgrading Flow - hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime); + hasMoreWork = scheduledHostCallback(currentTime); } finally { if (hasMoreWork) { // If there's more work, schedule the next message event at the end