Hello everybody,
as of Saturday, I'm able to compile primitives to native code dynamically. Although my compiler does not do any optimizations yet, I've seen speed improvement factors of 50-100 for string operations such as crc16 or beginsWith:
This is currently for the PowerPC only, and only supports integer arithmetics, string access primitives, and Object>>at: so that I could use the literal Array in crc16. I will add signed short and unsigned long operations soon so that primitives working on Bitmaps and SoundBuffers can be written.
My next plans are to streamline the calling mechanism to use C macros defined in a header file instead of external functions, so that an unnecessary function can can be avoided. I will write the macro definitions for 68K and x86 calling so that the VM porting guys can include them in their VMs while (hopefully) somebody starts writing code generators for their respective processors. Since float ops are not implemented yet, it seems too early to start working on other platforms, but if somebody wants to look at the code and start anyway, just send me a mail.
Hans-Martin
squeak-dev@lists.squeakfoundation.org