[squeak-dev] The Trunk: System-mt.1355.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Jun 8 07:30:12 UTC 2022

Marcel Taeumel uploaded a new version of System to project The Trunk:

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

Name: System-mt.1355
Author: mt
Time: 8 June 2022, 9:29:18.447101 am
UUID: fddf7561-4fb7-1a4d-9040-3007d78dedf2
Ancestors: System-mt.1354

Quickfix for making image-segment loading work again for image formats 68533 and 7033. See commentary.

=============== Diff against System-mt.1354 ===============

Item was changed:
  ----- Method: NativeImageSegment>>loadSegmentFrom:outPointers: (in category 'read/write segment primitives') -----
  loadSegmentFrom: segmentWordArray outPointers: outPointerArray
  	"Load segmentWordArray into the memory.  Adapt the primitive to the new API, which is to answer the array of loaded objects, the first of which should be the array of roots.  The primitive will install a binary image segment and return as its value the array
  	 of roots of the tree of objects represented.  Upon successful completion, the
  	 wordArray will have been becomed into anArray of the loaded objects.  So simply answer the segmentWordArray which will have becommed."
  	| segmentFormat |
  	segmentFormat := self segmentFormatFrom: segmentWordArray first.
+ 	self flag: #discuss. "mt: Should the version for image segments consider or ignore that extra flag for multiple byte-code sets? See primitive 98 or #storeSegmentFor:into:outPointers:."
+ 	segmentFormat = (Smalltalk imageFormatVersion bitClear: 512 "MultipleBytecodeSetsBitmask") ifTrue:
- 	segmentFormat = Smalltalk imageFormatVersion ifTrue:
  		[^(self primitiveLoadSegmentFrom: segmentWordArray outPointers: outPointerArray)
  			ifNil: [self error: 'segment load failed']
  			ifNotNil: [segmentWordArray]].
  	segmentFormat >= 68000
  			[Smalltalk wordSize = 4 ifTrue:
  				[^(Spur64BitImageSegmentLoader new loadSegmentFrom: segmentWordArray outPointers: outPointerArray)]]
  			[Smalltalk wordSize = 8 ifTrue:
  				[^(Spur32BitImageSegmentLoader new loadSegmentFrom: segmentWordArray outPointers: outPointerArray)]].
  	self error: 'segment version unrecognized'!

More information about the Squeak-dev mailing list