[Vm-dev] VM Maker: ImageFormat-dtl.31.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Apr 15 15:51:39 UTC 2018


David T. Lewis uploaded a new version of ImageFormat to project VM Maker:
http://source.squeak.org/VMMaker/ImageFormat-dtl.31.mcz

==================== Summary ====================

Name: ImageFormat-dtl.31
Author: dtl
Time: 15 April 2018, 11:51:24.795 am
UUID: 0d9cd87d-1743-4962-b490-7da14c1d0366
Ancestors: ImageFormat-dtl.30

Fix ckformat for 64 bit Spur, which saves format number in first 4 bytes of the header, versus 8 bytes for 64 bit V3. Prior version worked by accident for little endian host using strncmp() check, but failed when correct memcmp() was used without limiting check to 4 bytes for spur and 8 for V3.

=============== Diff against ImageFormat-dtl.30 ===============

Item was changed:
  ----- Method: ImageFormat class>>versionNumberByteArrays (in category 'utility') -----
  versionNumberByteArrays
  	"All byte array expressions of known version numbers. These are the possible values
+ 	that may appear in the first 4 or 8 bytes of a saved image file. All 32 bit images have
+ 	this number in the first 4 bytes of the image file header. A 64 bit V3 image has this
+ 	number saved in the first 8 bytes of the header (only 4 bytes of which are significant).
+ 	For a 64 bit Spur image, the number is saved in the first 4 bytes. In all cases, the value
+ 	may be stored in little endian or big endian byte ordering depending on the host
+ 	platform (although all currently supported VMs are for little endian host platforms)."
- 	that may appear in the first 4 or 8 bytes of a saved image file. A 64 bit image saves
- 	its image format number as a 64 bit value in the file header, and a 32 bit image saves
- 	its image format as a 32 bit value. The value may be stored in little endian or big endian
- 	byte ordering depending on the host platform."
  
  	"ImageFormat versionNumberByteArrays do: [:e |
  		Transcript cr; show: e printString , ': ', (ImageFormat fromBytes: e) description]"
  
  	^self allVersionNumberByteArrays select: [:e |
+ 		e size = 4
+ 			or: [ (self fromBytes: e) requiresSpurSupport not ]].
- 		e size = (self fromBytes: e) wordSize]
  !



More information about the Vm-dev mailing list