David T. Lewis uploaded a new version of ImageFormat to project VM Maker: http://source.squeak.org/VMMaker/ImageFormat-dtl.53.mcz
==================== Summary ====================
Name: ImageFormat-dtl.53 Author: dtl Time: 26 December 2021, 3:08:52.811788 pm UUID: e08b1774-e9c5-4923-88fe-a0255af83508 Ancestors: ImageFormat-dtl.52
Rescue utility method to handle the hypothetical case of an image file written as format 68533 or 7033 by a newer VM, but no local VM is available to open this file format. ImageFormat class>>clearSistaBit: rewrites the format number in the image file, setting it back to a number usable by an older VM that nevertheless has the necessary Sista bytecode support.
=============== Diff against ImageFormat-dtl.52 ===============
Item was added: + ----- Method: ImageFormat class>>clearSistaBit: (in category 'utility') ----- + clearSistaBit: imageFileName + "Rescue utility. If an image file was written by a VM that understands the new + image format numbers for multiple bytecode support, but no local VM is available + to run that image, this method can be used to rewrite the image format number + to an older format number that is likely to readable." + + "ImageFormat clearSistaBit: 'imageFileToFix.image' " + + | fmt int newInt fs | + fmt := self fromFile: imageFileName. + int := fmt asInteger. + fmt requiresMultipleBytecodeSupport + ifFalse: [ ^self inform: fmt asString, ' conversion not required']. + fmt setRequiresMultipleBytecodeSupport: false. + newInt := fmt asInteger. + (self confirm: 'convert image format number ', int asString , ' to ', newInt asString) + ifFalse: [^self inform: 'image format number ', int asString, ' not changed']. + fs := FileStream fileNamed: imageFileName. + [ fs binary; + nextPut: (newInt bitAnd: 16rFF); "assume little endian" + nextPut: ((newInt >> 8) bitAnd: 16rFF); + nextPut: ((newInt >> 16) bitAnd: 16rFF); + nextPut: ((newInt >> 24) bitAnd: 16rFF) ] ensure: [ fs close ]. + self inform: 'converted ', imageFileName,' image format number ', int asString , ' to ', newInt asString. + ^self fromFile: imageFileName. "verify result" + + + !
vm-dev@lists.squeakfoundation.org