(workInProgress, props, instance, renderExpirationTime)
| 16015 | } |
| 16016 | |
| 16017 | function processUpdateQueue(workInProgress, props, instance, renderExpirationTime) { |
| 16018 | // This is always non-null on a ClassComponent or HostRoot |
| 16019 | var queue = workInProgress.updateQueue; |
| 16020 | hasForceUpdate = false; |
| 16021 | |
| 16022 | { |
| 16023 | currentlyProcessingQueue = queue.shared; |
| 16024 | } // The last rebase update that is NOT part of the base state. |
| 16025 | |
| 16026 | |
| 16027 | var baseQueue = queue.baseQueue; // The last pending update that hasn't been processed yet. |
| 16028 | |
| 16029 | var pendingQueue = queue.shared.pending; |
| 16030 | |
| 16031 | if (pendingQueue !== null) { |
| 16032 | // We have new updates that haven't been processed yet. |
| 16033 | // We'll add them to the base queue. |
| 16034 | if (baseQueue !== null) { |
| 16035 | // Merge the pending queue and the base queue. |
| 16036 | var baseFirst = baseQueue.next; |
| 16037 | var pendingFirst = pendingQueue.next; |
| 16038 | baseQueue.next = pendingFirst; |
| 16039 | pendingQueue.next = baseFirst; |
| 16040 | } |
| 16041 | |
| 16042 | baseQueue = pendingQueue; |
| 16043 | queue.shared.pending = null; // TODO: Pass `current` as argument |
| 16044 | |
| 16045 | var current = workInProgress.alternate; |
| 16046 | |
| 16047 | if (current !== null) { |
| 16048 | var currentQueue = current.updateQueue; |
| 16049 | |
| 16050 | if (currentQueue !== null) { |
| 16051 | currentQueue.baseQueue = pendingQueue; |
| 16052 | } |
| 16053 | } |
| 16054 | } // These values may change as we process the queue. |
| 16055 | |
| 16056 | |
| 16057 | if (baseQueue !== null) { |
| 16058 | var first = baseQueue.next; // Iterate through the list of updates to compute the result. |
| 16059 | |
| 16060 | var newState = queue.baseState; |
| 16061 | var newExpirationTime = NoWork; |
| 16062 | var newBaseState = null; |
| 16063 | var newBaseQueueFirst = null; |
| 16064 | var newBaseQueueLast = null; |
| 16065 | |
| 16066 | if (first !== null) { |
| 16067 | var update = first; |
| 16068 | |
| 16069 | do { |
| 16070 | var updateExpirationTime = update.expirationTime; |
| 16071 | |
| 16072 | if (updateExpirationTime < renderExpirationTime) { |
| 16073 | // Priority is insufficient. Skip this update. If this is the first |
| 16074 | // skipped update, the previous update/state is the new base |
no test coverage detected