On 8/18/2010 2:21 AM, Bert Freudenberg wrote:
On 18.08.2010, at 04:48, Andreas Raab wrote:
On 8/17/2010 6:54 PM, Eliot Miranda wrote:
In the VW VM I added code to choose a class in the specialObjectsArray (Array) and search it for a byte object with the characters 'Array' and use that as the class name index. Similarly its class was searched for an object equal to Array and that slot was used as the thisClass index. I see I was too lazy to do that in StackInterpreter>>initializeInterpreter but I should, and should introduce classNameIndex and thisClassIndex and use them in place of the hard-coded constants. That way one can save immediately after adding/removing the behavior inst var and have the VM get things right on start-up.
That's one option. An alternative is to provide the class name index via the splObjsArray and default to 5 if not present.
I like Elliot's option better. Not having to maintain that index means there is one thing less to worry about. If the added flexibility of an explicit index is needed later, it could still be added at that point.
I'm not entirely sure about that. You do have to maintain the information that after adding an ivar you'll have to save and restart the image or else strange things will happen. This effect is nowhere documented. With the index you could automate the process (using the ClassBuilder notification) so that if Class chnages shape it updates the splObj entry automatically.
Cheers, - Andreas