[Vm-dev] Push/pop considered harmful
David T. Lewis
lewis at mail.msen.com
Tue Mar 3 12:47:58 UTC 2009
On Mon, Mar 02, 2009 at 11:24:07PM -0800, Andreas Raab wrote:
> What we are doing right now is along those lines - basically we are
> replacing push/pop in the interpreter proxy by variants that don't
> actually do push and pop. Rather than that, pop is ignored (it only
> remembers how many times you popped so we can track inconsistencies) and
> push remembers the return value.
Excellent idea, especially since this can be done without requiring
modifications to the existing plugins.
> This should definitely be replaced at some point by a proper
> #primitiveReturnValue: call. I was wondering what people think about the
> possibility of automatically rewriting plugins to fix those uses? It
> should be reasonably easy to find all the uses of "interpreterProxy pop:
> foo" and just remove them and replace "interpreterProxy
> push[Float|Int]:" with "interpreterProxy primitiveReturn[Float|Int]:".
This would be helpful, although not essential. It might have problems
with things like this:
interpreterProxy pop: 1; push: foo
But if it does 90% of the conversions automatically, that would still be
a big help.
More information about the Vm-dev