Commit Graph

12 Commits

Author SHA1 Message Date
Samuel Susla 9b3c12dc87 Funnel All Fabric calls to RuntimeExecutor to RuntimeScheduler
Summary:
Changelog: [internal]

This diff moves all calls to RuntimeExecutor to RuntimeScheduler. The calls are still immediately dispatched. Timing of events will not change.

The goal of this diff is to prepare infrastructure for Concurrent Mode.

Reviewed By: JoshuaGross

Differential Revision: D27937665

fbshipit-source-id: 434d78c95ccf23d8da41186d0dae91bff4eda384
2021-05-13 08:03:29 -07:00
Samuel Susla 841756b150 Implement RuntimeScheduler::getCurrentPriorityLevel
Summary:
Changelog: [internal]

Implement `RuntimeScheduler::getCurrentPriorityLevel`.

JavaScript implementation: https://github.com/facebook/react/blob/master/packages/scheduler/src/forks/SchedulerNoDOM.js#L63

Reviewed By: ShikaSD

Differential Revision: D27998510

fbshipit-source-id: 634c09185f9eae8f7afcdb6acd9b74effd587da7
2021-04-27 00:29:04 -07:00
Samuel Susla e9016f8b73 Handle $$typeof call in RuntimeSchedulerBinding
Summary:
Changelog: [internal]

Explicitly return undefined for `$$typeof` inside RuntimeSchedulerBinding.

React calls `$$typeof` on RuntimeScheduler. To make sure assert only triggers if unsupported value is requested, it needs to be explicitly handled

Reviewed By: mdvacca

Differential Revision: D27854472

fbshipit-source-id: 515c68d92b291cc274f5370c45e49302534e6f9c
2021-04-20 09:22:23 -07:00
Samuel Susla 06753d431a Add expiration date to Task and use it to determine priority
Summary:
Changelog: [internal]

To prevent starvation, this diff implements expiration time as a way to order tasks in priority queue. This stops higher priority tasks from preventing lower priority tasks from running. The same mechanism is implemented in [JavaScript's scheduler](https://github.com/facebook/react/blob/master/packages/scheduler/src/forks/SchedulerNoDOM.js).

Reviewed By: mdvacca

Differential Revision: D27707887

fbshipit-source-id: 3dc734c856a166ef5c17c5045ebd429565ba79f0
2021-04-14 02:53:24 -07:00
Samuel Susla 240588b6d4 Implement RuntimeScheduler::now
Summary:
Changelog: [internal]

Implement RuntimeScheduler::now and exposite it to JavaScript. JavaScripts expects miliseconds and is using `performance.now()` call to get this value.

More about `performance.now()`: https://developer.mozilla.org/en-US/docs/Web/API/Performance/now
JavaScript implementation in Scheduler: https://github.com/facebook/react/blob/master/packages/scheduler/src/forks/SchedulerNoDOM.js#L71-L82

Reviewed By: JoshuaGross

Differential Revision: D27675512

fbshipit-source-id: bce5ac700e71b1722cd280dfbdd15e141783a3a5
2021-04-14 02:53:24 -07:00
Samuel Susla 52f1d54509 Add implementation for requestPaint
Summary:
Changelog: [internal]

requestPaint is unimplemented on JavaScript scheduler:

https://github.com/facebook/react/blob/master/packages/scheduler/src/forks/SchedulerNoDOM.js#L445

Reviewed By: mdvacca

Differential Revision: D27651947

fbshipit-source-id: 1e3cece8cbcd330f2408887ceb283ca61374f5bd
2021-04-14 02:53:23 -07:00
Samuel Susla cc3e87c45b Implement RuntimeScheduler::getShouldYield
Summary:
Changelog: [internal]

Implement RuntimeScheduler::getShouldYield and expose it through JSI.
For now we are only returning `false`. The value is backed by atomic_bool and in the future we will be able to indicate that React should yield to native.

JavaScript implementation:
https://github.com/facebook/react/blob/master/packages/scheduler/src/forks/SchedulerNoDOM.js#L439-L441

Reviewed By: JoshuaGross

Differential Revision: D27648579

fbshipit-source-id: b9313e2efbd9daae8975357df9de803f24a35e89
2021-04-14 02:53:23 -07:00
Samuel Susla 08ef1df1ba Implement RuntimeScheduler::cancelTask
Summary:
Changelog: [internal]

Implement RuntimeScheduler::cancelTask and expose it through JSI.

JavaScript implementation:
https://github.com/facebook/react/blob/master/packages/scheduler/src/forks/SchedulerNoDOM.js#L384-L397

Reviewed By: mdvacca

Differential Revision: D27648071

fbshipit-source-id: 91ae92b336017596fb658831824e971c7e047cd2
2021-04-13 01:55:04 -07:00
Samuel Susla 3c14c196ca Add return value to RuntimeScheduler unstable_scheduleCallback
Summary:
Changelog: [internal]

unstable_scheduleCallback needs to return reference to the created task so it can be cancelled later.

Reviewed By: mdvacca

Differential Revision: D27622779

fbshipit-source-id: 54160015c7f98e123d08c2e13efac4f498d3ba5e
2021-04-13 01:55:04 -07:00
Samuel Susla 2779129434 Add minimal implementation of RuntimeScheduler::scheduleTask
Summary:
Changelog: [internal]

Add minimal implementation of schedule task. More features and proper scheduling will be added later.

Reviewed By: mdvacca

Differential Revision: D27622138

fbshipit-source-id: b2e4623d38e7217290a6a3c59ccc10a1c13e3a4f
2021-04-13 01:55:04 -07:00
Samuel Susla 8d5c22edfd Add runtime scheduler priorities
Summary:
Changelog: [internal]

Add runtime scheduler priorities

Reviewed By: JoshuaGross

Differential Revision: D27618305

fbshipit-source-id: 95e4e02f3473acb41bca0c22df7b271a8d710f34
2021-04-13 01:55:03 -07:00
Samuel Susla eb13baf2a6 Introducing RuntimeScheduler module
Summary:
Changelog: [internal[

Introducing RuntimeScheduler. A coordinator of work between native and React.

Reviewed By: mdvacca

Differential Revision: D27616818

fbshipit-source-id: e90d3d9ca8907be99e61f69e62e83cece8155050
2021-04-08 04:07:34 -07:00