Bert Freudenberg uploaded a new version of System to project The Trunk: http://source.squeak.org/trunk/System-bf.914.mcz
==================== Summary ====================
Name: System-bf.914 Author: bf Time: 8 September 2016, 9:49:26.777611 pm UUID: 5fae5167-168c-4c08-8f4f-a624c6f39fb5 Ancestors: System-cmm.913
Fix DataStream reading of Characters on Spur.
=============== Diff against System-cmm.913 ===============
Item was changed: ----- Method: DataStream>>readCharacterOfSize: (in category 'write and read') ----- readCharacterOfSize: instSize + "Character changed to an immediate class in Spur" | refPosn val | self assert: instSize = 1. refPosn := self getCurrentReference. + self setCurrentReference: refPosn. "before recursion - not really needed for integer" - self setCurrentReference: refPosn. val := self next. + self assert: val isInteger. + self setCurrentReference: refPosn. "before returning to next" ^ Character value: val. !
Item was changed: ----- Method: DataStream>>readInstance (in category 'write and read') ----- readInstance "PRIVATE -- Read the contents of an arbitrary instance. ASSUMES: readDataFrom:size: sends me beginReference: after it instantiates the new object but before reading nested objects. NOTE: We must restore the current reference position after recursive calls to next. Let the instance, not the class read the data. " | instSize aSymbol refPosn anObject newClass |
instSize := (byteStream nextNumber: 4) - 1. refPosn := self getCurrentReference. aSymbol := self next. + (aSymbol == #Character or: [aSymbol isCharacter "hack - why does this happen?"]) - aSymbol == #Character ifTrue: [^ self readCharacterOfSize: instSize]. newClass := Smalltalk at: aSymbol asSymbol. anObject := newClass isVariable "Create object here" ifFalse: [newClass basicNew] ifTrue: [newClass basicNew: instSize - (newClass instSize)]. self setCurrentReference: refPosn. "before readDataFrom:size:" anObject := anObject readDataFrom: self size: instSize. self setCurrentReference: refPosn. "before returning to next" ^ anObject!
Item was changed: ----- Method: DataStream>>vacantRef (in category 'other') ----- vacantRef "Answer the magic 32-bit constant we use ***ON DISK*** as a stream 'reference position' to identify a reference that's not yet filled in. This must be a value that won't be used as an ordinary reference. Cf. outputReference: and readReference. -- NOTE: We could use a different type ID for vacant-refs rather than writing object-references with a magic value. (The type ID and value are overwritten by ordinary object-references when weak refs are fullfilled.)"
+ ^1073741823 "Hardcode former SmallInteger maxVal"! - ^ SmallInteger maxVal!
packages@lists.squeakfoundation.org