Bryce Kampjes bryce@kampjes.demon.co.uk wrote:
There are a few things that would be nice purely for performance in an image change. Having a tag bit of 0 rather than 1 for integers would shave 3 instructions off simple arithmetic taking it down to 5 instructions on an x86.
.. and it would involve having the tag bit added to every OOP, meaning that one would have to mask out that bit for any indirection through that OOP.
Is it possible to speed proper block closures up using less drastic measures?
Of course. Not that it's particularly tied to block or closures but a realtively simple context cache (Eliot wrote one design up for OOPSLA87) can make a big difference. Costs some memory of course but that is something that can be configured at VM compile time or start time depending on the design. The key point is to not break the rules; one of the objections to Anthony's first BC system was that it did that by making too much visible and different.
tim