On 25-Apr-07, at 9:48 AM, Andreas Raab wrote:
A related issue: It bothers me greatly how complex all of this stuff has become. The whole 32/64bit conversion (oopForPointer: etc) and now pointer comparisons (no longer using < or >) makes me wonder of how sustainable this is. Even I can't recall all the rules that have to be followed to write clean 32/64/2GB barrier code. I wish we had a way of getting back to a set of simpler rules... any ideas anyone?
It's partly because of having the slang code runnable in the simulator. All the oops are integers and so we obviously have to convert them in the generated code if we want pointers. Would using some of the CPointer etc classes help? It would mean changing the simulator a bit to cope of course but if it means we can generate better VM code it is probably worth it. It's a long time since the basci code was written and it may be time to attempt a substantial rewrite. Machines have changed a lot in 10 years. Perhaps the at- cache isn't valuable anymore?
I have a feeling (not looked seriously at the code in ages, so excuse vagueness) that some of the complexity also stems from the work to support mixed 32 & 64 bitness. You can't just cast when you need to add/subtract otBase or whatever. If this facility is not needed then there may well be some simplifications possible.
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Attitudes are contagious. Mine might kill you