The current IonBuilder + TI setup has a number of issues:
- Complexity and security concerns.
- Performance overhead for Baseline/C++ code.
- Overspecialization, resulting in unnecessary recompilations.
- MIR building has to be done on the main thread, often requires loop restarts.
- Memory usage for type information and ObjectGroups.
To address this, we want to prototype a much simpler MIR builder based on compiling CacheIR to MIR. The main parts of this will be:
- Improve CacheIR and Baseline ICs. Avoid polymorphic stubs in certain cases. Improve the CacheIR bytecode reader interface. These changes will help both ICs and WarpBuilder.
- Add a new MIR builder (WarpBuilder). WarpBuilder will run some code on the main thread but MIR building will happen off-thread.
- Evaluate performance and optimize until we think things are in good enough shape to replace IonBuilder, TI with WarpBuilder.