
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
