Closed ckoparkar closed 7 years ago
When we were talking about this on the whiteboard, we modified it slightly.
We can infer constraints and log conflicts in a separate pass, before inferring traversal effects.
Subsumed by new checklist: https://github.com/iu-parfunc/tree-velocity/issues/66
Slack converstation;
@rrnewton I think we can manage a nanopass style where we break out these steps:
I'd like to iterate on a design for a refined region calculus that is the target language after step 6.
The goal is that step 7 is pretty simple after everything else is done.
Right now cursorize mixes up elements of steps 2,6,7
An optional step 6B would be to do what MLKit does and analyze to find "small" regions that only have a known, fixed amount of data added to them.
These could be stack allocated (currently ScopedAlloc) safely, whereas everything else needs a growable region.
(Currently we unsafely use ScopedAlloc when we know it's lifetime is bounded, without knowing what the bound on the # bytes is)