[Vm-dev] VM Maker: VMMaker.oscog-tpr.1304.mcz

commits at source.squeak.org commits at source.squeak.org
Fri May 15 02:15:34 UTC 2015

tim Rowledge uploaded a new version of VMMaker to project VM Maker:

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

Name: VMMaker.oscog-tpr.1304
Author: tpr
Time: 14 May 2015, 7:14:06.9 pm
UUID: 4ed4bcb5-48d9-462d-a493-123140828ba3
Ancestors: VMMaker.oscog-eem.1303

Make ARM rotated 8bit constants actually be correct(er) ie
16r4000001 (SmallInteger 16r2000000) work. This helps quite a lot.

=============== Diff against VMMaker.oscog-eem.1303 ===============

Item was changed:
  ----- Method: CogARMCompiler>>rotateable8bitImmediate:ifTrue:ifFalse: (in category 'testing') -----
  rotateable8bitImmediate: constant ifTrue: trueAlternativeBlock ifFalse: falseAlternativeBlock
  	<inline: true>
  	"For data processing operands, there is the immediate shifter_operand variant, 
  	 where an 8 bit value is ring shifted _right_ by i.
  	 This is only suitable for quick constants(Cq), which won't change."
  	(constant bitAnd: 16rFF) = constant ifTrue:
  		[^trueAlternativeBlock value: 0 value: constant].
  	2 to: 30 by: 2 do:
  		[:i |
  		(constant bitAnd: ((16rFF <<i bitAnd:16rFFFFFFFF) bitOr: 16rFF>>(32-i))) = constant ifTrue:
+ 			[^trueAlternativeBlock value: 32 - i value: ((constant >> i) bitOr: (constant <<(32 - i) bitAnd:16rFFFFFFFF))]].
- 			[^trueAlternativeBlock value: 32 - i value: constant >> i]].
  	^falseAlternativeBlock value!

More information about the Vm-dev mailing list