The MIRGenerator reference in MBasicBlock makes inlining tough. IonBuilder (subclass of MIRGenerator) wants to be used as an abstraction for "compile this script and give me a graph of basic blocks". However, MBasicBlock refers to a MIRGenerator, so you can't easily use a separate IonBuilder to compile an inline graph. (If you do, you have to iterate over all the MBasicBlocks in that inline graph and switch them to use the outer IonBuilder as their MIRGenerator. In addition, you have to copy the "next id" numbers from the outer graph to the inner graph and back out again.) MIRGenerator is a bit of a strange abstraction, so we'll rip it out and replace it with its constituent components: CompileInfo (with static information about the script being compiled) and MGraph (which will be referred to by the MBasicBlocks and absorb the list of MBasicBlocks). The allocator functionality is implicitly available via TLS. While we're at it, it would be nice to rename MIRGraph to MGraph.
(In reply to Chris Leary [:cdleary] from comment #0) > While we're at it, it would be nice to rename MIRGraph to MGraph. Nix that (for symmetry with LIRGraph).
Status: ASSIGNED → RESOLVED
Last Resolved: 6 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.