3 ms·
Thanks for the more complete explanation! > Normally you'd start from bytecode, build an SSA, then do a pass where you apply type information. > With Warp, th
by mintplant 2y ago
Thanks for the more complete explanation!
> Normally you'd start from bytecode, build an SSA, then do a pass where you apply type information.
> With Warp, the design simplifies into stitching together a bunch of CacheIR chunks which already embed the optimization information you care about, and then compiling that.
This is what I meant by ditching most of the profiling stuff; I suppose I should have said "type inference stuff" to be more precise.
> Originally the "shared code" was emitted by a bunch of statically defined methods that emitted a fixed bit of assembly (one for each kind of stub). That became unweildy as we added more stubs, so CacheIR was designed.
I remember all too well :) I worked on the first pass at implementing megamorphic caches into the original stub generators that spit out (macro)assembly directly, before we had CacheIR. So much code duplication...
- kannanvijayan 2y agoAh, sorry for the misinterpretation! Also, we may have overlapped on the team :)