[squeak-dev] The Inbox: System-lrnp.1354.mcz

commits at source.squeak.org commits at source.squeak.org
Wed May 25 03:29:35 UTC 2022

A new version of System was added to project The Inbox:

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

Name: System-lrnp.1354
Author: lrnp
Time: 24 May 2022, 9:29:31.051778 pm
UUID: fee3cca0-bd5c-4b98-b203-c94d275c3467
Ancestors: System-ct.1353

complements Environments-lrnp.85

=============== Diff against System-ct.1353 ===============

Item was changed:
  ----- Method: SmalltalkImage>>fixObsoleteReferences (in category 'housekeeping') -----
  	"Smalltalk fixObsoleteReferences"
  	Smalltalk garbageCollect; garbageCollect.
  	Preference allInstances do: [:each || informee realName newInformee | 
  		informee := each instVarNamed: #changeInformee.
  		((informee isKindOf: Behavior)
  			and: [informee isObsolete])
  			ifTrue: [
  				Transcript show: 'Preference: '; show: each name; cr.
  				realName := (informee name copyReplaceAll: 'AnObsolete' with: '') asSymbol.
  				newInformee := (informee environment declarationOf: realName) value.
  				each instVarNamed: #changeInformee put: newInformee]].
+ 	globals sweepObsoleteClassReferences.
  	CompiledMethod allInstances do: [:method |
  		| obsoleteBindings |
  		obsoleteBindings := method literals select: [:literal |
  			literal isVariableBinding
  				and: [literal value isBehavior
  				and: [literal value isObsolete]]].
  		obsoleteBindings do: [:binding |
  			| obsName realName realClass |
  			obsName := binding value name.
  			Transcript show: 'Binding: '; show: obsName; cr.
  			realName := obsName copyReplaceAll: 'AnObsolete' with: ''.
  			realClass := Smalltalk at: realName asSymbol ifAbsent: [UndefinedObject].
  			binding isSpecialWriteBinding
  				ifTrue: [binding privateSetKey: binding key value: realClass]
  				ifFalse: [binding key: binding key value: realClass]]].
  	Behavior flushObsoleteSubclasses.
  	Smalltalk garbageCollect; garbageCollect.

More information about the Squeak-dev mailing list