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
Executable superblocks must conform to the Executor interface, and should be able to jump into other superblocks.
These are quite distinct requirements from region selection and optimization.
Therefore, region selection and optimization should use a fixed per-interpreter buffer (maybe per-thread with nogil) from which the data is copied to create the executor.
The optimized region produced by the optimizer consists of a tree, zero or more of leaves of which may jump back to the root.
This format is hard execute efficiently as either all the branches need to compiled or none of them, and as the exits need to efficiently branch to code that does not exist yet.
We should convert the tree into a linear trace with exits to other linear traces. Jumps to the top can be compiled as direct jumps where possible, otherwise as indirect jumps to the primary executor.
See #621 for a design of executors that allows back-patching without self modifying code.
The text was updated successfully, but these errors were encountered:
Executable superblocks must conform to the
Executor
interface, and should be able to jump into other superblocks.These are quite distinct requirements from region selection and optimization.
Therefore, region selection and optimization should use a fixed per-interpreter buffer (maybe per-thread with nogil) from which the data is copied to create the executor.
The optimized region produced by the optimizer consists of a tree, zero or more of leaves of which may jump back to the root.
This format is hard execute efficiently as either all the branches need to compiled or none of them, and as the exits need to efficiently branch to code that does not exist yet.
We should convert the tree into a linear trace with exits to other linear traces. Jumps to the top can be compiled as direct jumps where possible, otherwise as indirect jumps to the primary executor.
See #621 for a design of executors that allows back-patching without self modifying code.
The text was updated successfully, but these errors were encountered: