[squeak-dev] The Trunk: System-ul.1147.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Mar 19 01:45:07 UTC 2020


Levente Uzonyi uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-ul.1147.mcz

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

Name: System-ul.1147
Author: ul
Time: 18 March 2020, 7:45:34.703617 pm
UUID: 28584d2a-ac1b-4e16-a2fe-8a12694179c4
Ancestors: System-eem.1146

- fix: make ThirtyTwoBitRegister >> leftRotateBy: work when the argument is negative

=============== Diff against System-eem.1146 ===============

Item was changed:
  ----- Method: ThirtyTwoBitRegister>>leftRotateBy: (in category 'accumulator ops') -----
  leftRotateBy: bits
  	"Rotate my contents left by the given number of bits, retaining exactly 32 bits."
  	"Details: Perform this operation with no LargeInteger arithmetic."
  
  	| bitCount newHi |
+ 	bitCount := bits \\ 32. "Ensure bitCount is between 0 and 31"
- 	bitCount := bits.
- 	bitCount >= 32 ifTrue: [ bitCount := bitCount \\ 32 ].
  	bitCount >= 16 ifTrue: [
  		newHi := low.
  		low := hi.
  		hi := newHi.
  		bitCount := bitCount - 16 ].
  	bitCount >= 15 ifTrue: [
  		newHi := ((hi bitAnd: 16r1) bitShift: 15) bitOr: (low bitShift: -1).
  		low := ((low bitAnd: 16r1) bitShift: 15) bitOr: (hi bitShift: -1).
  		hi := newHi.
  		^self ].
  	bitCount >= 1 ifTrue: [
  		| shift |
  		shift := bitCount - 16.
  		newHi := ((hi bitShift: bitCount) bitAnd: 16rFFFF) bitOr: (low bitShift: shift).
  		low := ((low bitShift: bitCount) bitAnd: 16rFFFF) bitOr: (hi bitShift: shift).
  		hi := newHi ]!



More information about the Squeak-dev mailing list