You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
So far, we've been assuming that everything will run on x86_64 and Linux, and it has been quite helpful not to have to spend time thinking about other platforms. However, in the long term we would like Mijit to run on many different CPU architectures and operating systems. What is needed is a target abstraction layer (hereafter TAL).
There is enough code now that we can begin to enumerate the requirements for the TAL. The required planning work is mostly to draw a boundary through the existing code, and to invent new APIs where the boundary does not follow existing module boundaries. The implementation work is then mostly refactoring.
Aggregate
The following existing API elements do not depend strongly on the target, and could form part of the abstraction that is implemented for every platform:
buffer::{Buffer::execute}
x86_64::{Assembler::patch}
lowerer::{ALLOCATABLE_REGISTERS, Lowerer}
optimizer::{cost}
Invent
The following APIs are target-specific, and need to be broken up and abstracted:
JitInner::{new} - Prologue and epilogue.
Hide
The following APIs are target-specific and need to be hidden behind the abstraction layer:
So far, we've been assuming that everything will run on x86_64 and Linux, and it has been quite helpful not to have to spend time thinking about other platforms. However, in the long term we would like Mijit to run on many different CPU architectures and operating systems. What is needed is a target abstraction layer (hereafter TAL).
There is enough code now that we can begin to enumerate the requirements for the TAL. The required planning work is mostly to draw a boundary through the existing code, and to invent new APIs where the boundary does not follow existing module boundaries. The implementation work is then mostly refactoring.
Aggregate
The following existing API elements do not depend strongly on the target, and could form part of the abstraction that is implemented for every platform:
Invent
The following APIs are target-specific, and need to be broken up and abstracted:
Hide
The following APIs are target-specific and need to be hidden behind the abstraction layer:
Expose
The following APIs are target-independent, and can be exposed in front of the abstraction layer:
Additional work
The text was updated successfully, but these errors were encountered: