Skip to content
  • Damien George's avatar
    py, vm: Replace save_ip, save_sp with code_state->{ip, sp}. · c60a261e
    Damien George authored
    This may seem a bit of a risky change, in that it may introduce crazy
    bugs with respect to volatile variables in the VM loop.  But, I think it
    should be fine: code_state points to some external memory, so the
    compiler should always read/write to that memory when accessing the
    ip/sp variables (ie not put them in registers).
    Anyway, it passes all tests and improves on all efficiency fronts: about
    2-4% faster (64-bit unix), 16 bytes less stack space per call (64-bit
    unix) and slightly less executable size (unix and stmhal).
    The reason it's more efficient is save_ip and save_sp were volatile
    variables, so were anyway stored on the stack (in memory, not regs).
    Thus converting them to code_state->{ip, sp} doesn't cost an extra
    memory dereference (except maybe to get code_state, but that can be put
    in a register and then made more efficient for other uses of it).