[squeak-dev] The Trunk: Collections-mt.977.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Jan 26 07:29:15 UTC 2022


Marcel Taeumel uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-mt.977.mcz

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

Name: Collections-mt.977
Author: mt
Time: 26 January 2022, 8:29:08.417127 am
UUID: 98f4fedb-1f96-e84c-b3a1-c689eb9244cd
Ancestors: Collections-ct.976

Updates commentary for primitive 72. Complements Kernel-mt.1443. Thanks to Florin and Vanessa for the pointer.

=============== Diff against Collections-ct.976 ===============

Item was changed:
  ----- Method: Array>>elementsForwardIdentityAndHashTo: (in category 'converting') -----
  elementsForwardIdentityAndHashTo: otherArray
+ 	"This primitive performs a bulk mutation, causing all pointers to the elements of the receiver to be replaced by pointers to the corresponding elements of otherArray.
+ 	 NOTE THAT the #identityHash of the objects in otherArray are changed, so that hashed structures that contain such objects MUST BE rehashed while structures that contain objects from the receiver are still properly indexed. See implementors of #rehash."
- 	"This primitive performs a bulk mutation, causing all pointers to the elements of the
- 	 receiver to be replaced by pointers to the corresponding elements of otherArray.
- 	 The identityHashes remain with the pointers rather than with the objects so that
- 	 the objects in this array should still be properly indexed in any existing hashed
- 	 structures after the mutation."
  	<primitive: 72 error: ec>
  	ec == #'no modification' ifTrue:
  		[^self modificationForbiddenFor: otherArray becomeSelector: #elementsForwardIdentityAndHashTo:].
  	ec == #'bad receiver' ifTrue:
  		[^self error: 'receiver must be of class Array'].
  	ec == #'bad argument' ifTrue:
  		[^self error: (otherArray class == Array
  						ifFalse: ['arg must be of class Array']
  						ifTrue: ['receiver and argument must have the same size'])].
  	ec == #'inappropriate operation' ifTrue:
  		[^self error: 'can''t become immediates such as SmallIntegers or Characters'].
  	ec == #'object is pinned' ifTrue:
  		[^self error: 'can''t become pinned objects'].
  	ec == #'insufficient object memory' ifTrue:
  		[self error: 'The virtual machine is out-of-date.  Please upgrade.'].
  	self primitiveFailed!



More information about the Squeak-dev mailing list