Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Branches internal to the expression tree are implemented using dynamically assigned labels that are allocated after all 'graph' labels (for objects and instructions). Prior to this patch, labels were assigned to nodes (using the info structure) during the tree analysis phase of tree construction. This has two problems - at that point, we do not know how many 'graph' labels need to be allocated, so we can't allocate an absolute label number. Furthermore, this sets up the possibility for the optimizer to disrupt the label structure of the tree and break it for no good reason at all. Finally, I wanted to get rid of the label number in the info structure because I want the info structure to fit in 32 and coexist with the nodes themselves (so we don't have to maintain two arrays with equal sizes). With this commit we move the assignment of node labels to the tiling phase, which is safe from disruption by the optimizer, and stores the node -> label association in the (temporary) tiler state structure. We also give the tiles absolute label numbers so that we don't have to add the (transient) current label offset. There is some overlap between block numbers and label numbers so maybe they can be unified further, but I'm not interested in that now. As a further drawback, the MVM_jit_tile_expr_tree can now change the compiler label offset as a side effect, which isn't very 'clean', but not unreasonable either.
- Loading branch information
Showing
4 changed files
with
159 additions
and
156 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.