On Mon, May 11, 2009 10:27PM, Antoine Pitrou wrote: Hi Antoine
Hi,
WPython is a re-implementation of (some parts of) Python, which drops support for bytecode in favour of a wordcode-based model (where a is word is 16 bits wide).
This is great! Have you planned to port in to the py3k branch? Or, at least, to trunk?
It was my idea too, but first I need to take a deep look at what parts of code are changed from 2.6 to 3.0. That's because I don't know how much work is required for this "forward" port.
Some opcode and VM optimizations have gone in after 2.6 was released, although nothing as invasive as you did.
:-D Interesting.
About the CISC-y instructions, have you tried merging the fast and const arrays in frame objects? That way, you need less opcode space (since e.g. BINARY_ADD_FAST_FAST will cater with constants as well as local variables).
Regards
Antoine.
It's an excellent idea, that needs exploration. Running my stats tools against all .py files found in Lib and Tools folders, I discovered that the maximum index used for fast/locals is 79, and 1853 for constants. So if I find a way to easily map locals first and constants following in the same array, your great idea can be implemented saving A LOT of opcodes and reducing ceval.c source code. I'll work on that after the two releases that I planned. Thanks for your precious suggestions! Cesare