To Do Right Now ------------------ - basic docs and examples Longer-term ------------------ - make W_IntObject immutable (done, but gives bad code with unexpected merges - try to understand why) - do something even better for calls (and LOOKUP_METHOD) - redirect only the relevant fields in the virtualized frames - we are promoting inside space.type, there are other uses of it beyond dispatching, it may not be the best idea in general - don't follow eagerly the exception path of 'int_xxx_ovf'. - global merge point and portal should delegate their cache impl. to the application (to allow keeping things alive correctly) - unify the notion of the portal entry cache with an implicit global merge point (for the purpose of promotion), conceptually at the beginning of the portal, but concretely implemented in the portal entry - make backend opts usable on the interp+timeshifted interp graph forest Open issues -------------- - think about aliasing issues with virtualizables Improvements ------------- - promotions for "python dispatching" - do something correct about bytecode_trace - floats - jit-friendlier interpreter (whatever, as needed) - reduce the size of the timeshifted code: no dispatch for no split/merge functions ... - insert hints to forget uninteresting constants, e.g. the initial 0 of RPython list iterators - pyopcode.compare_dispatch_table => switch statement - share code between the machine code backends (MachineCodeBlock, possibly register allocation) - more green vars in the hintannotator: for y=hint(x, deepfreeze=True) if x is green