From a22fabc2a110a40ead576ada5b3bf66840e852ba Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Fri, 16 Nov 2018 10:39:27 -0800 Subject: [PATCH] Reduce scheduler serialization overhead (#14249) In the process of switching to MessageChannel, it seems the postMessage call was modified to pass `"*"` (originally the target origin value from `window.postMessage`). This actually ends up triggering serialization, whereas passing `undefined` bypasses. To save some investigation, passing a Number like `0` still incurs serialization overhead - `undefined` has special behavior. --- packages/scheduler/src/Scheduler.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/scheduler/src/Scheduler.js b/packages/scheduler/src/Scheduler.js index b122c69bc9..c815d0071b 100644 --- a/packages/scheduler/src/Scheduler.js +++ b/packages/scheduler/src/Scheduler.js @@ -618,7 +618,7 @@ if (typeof window !== 'undefined' && window._schedMock) { frameDeadline = rafTime + activeFrameTime; if (!isMessageEventScheduled) { isMessageEventScheduled = true; - port.postMessage('*'); + port.postMessage(undefined); } }; @@ -627,7 +627,7 @@ if (typeof window !== 'undefined' && window._schedMock) { timeoutTime = absoluteTimeout; if (isFlushingHostCallback || absoluteTimeout < 0) { // Don't wait for the next frame. Continue working ASAP, in a new event. - port.postMessage('*'); + port.postMessage(undefined); } else if (!isAnimationFrameScheduled) { // If rAF didn't already schedule one, we need to schedule a frame. // TODO: If this rAF doesn't materialize because the browser throttles, we