|
From: Brent P. <bre...@ai...> - 2003-09-26 08:26:43
|
Hi, This is my second sumission of this enhancement. This version is compatible with the existing image. Attached is a zip archive which implements changes neccessary to perform a becomeForward WITHOUT changing the identity hash bits of the argument. This change has been introduced at the request of Chris Muller who needs it to provide fully transparent persistance of symbols in his Magma database. Currently this will crash your image: String new becomeForward: #size. The new changes allow: String new becomeForward: #size copyHash: false. This leaves #size identityHash unchanged. The changes require changes to the virtual machine. A new primitive, 249, Interpreter>>#primitiveArrayBecomeOneWayCopyHash has been introduced. It is the same as the existing primitive, 72, primitiveArrayBecomeOneWay, except that it accepts the additional copyHash flag as an argument. Changes to the image are also required to support the changed primitive and introduce #becomeForward:copyHash: and friends. This enhancement DOES NOT require coordinated changes to the virtual machine and image. It is possible to change the virtual machine and use the existing images. Only when the new functionality is required, should the image changes be installed. Testing ------- The zip archive includes a SUnit test class. In addition, I have used the new virtual machine to load all updates from a pristine 3.6alpha[5325] to 3.7alpha[5423]. I have performed this test with and without the image changes installed. I would be most grateful if the vm high priests can advise me on how to prepare this change for inclusion as it is of clear benefit to the Magma database and has been discussed at length before. The 925kB win32 Squeak.exe is available on request for those who wish to test but do not wish to build their own vm. Regards Brent -- Brent Pinkney Aircom International (SA) cell: +27 83 518 4167 tel: +27 11 324 3615 fax: +27 11 784 8027 e-mail: bre...@ai... |