[Vm-dev] VM Maker: VMMaker.oscog-eem.980.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Dec 12 01:28:42 UTC 2014


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.980.mcz

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

Name: VMMaker.oscog-eem.980
Author: eem
Time: 11 December 2014, 5:25:43.82 pm
UUID: 3d7d339f-6a22-4bd1-b959-cddf9c41cc60
Ancestors: VMMaker.oscog-eem.979

And fix the regression in generateShiftLeft:on:indent:

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

Item was changed:
  ----- Method: CCodeGenerator>>generateShiftLeft:on:indent: (in category 'C translation') -----
  generateShiftLeft: msgNode on: aStream indent: level
  	"Generate a C bitShift.  If we can determine the result
  	 would overflow the word size, cast to a long integer."
  	| rcvr arg valueBeyondInt castToLong |
  	rcvr := msgNode receiver.
  	arg := msgNode args first.
+ 	valueBeyondInt := 1 bitShift: 32. "The default type of const << N is int."
- 	valueBeyondInt := 1 bitShift: BytesPerWord * 4. "The default type of const << N is int."
  	castToLong := false.
  	rcvr constantNumbericValueOrNil ifNotNil:
  		[:rcvrVal|
  		arg constantNumbericValueOrNil ifNotNil:
  			[:argVal|
  			 castToLong := rcvrVal < valueBeyondInt
  							  and: [(rcvrVal bitShift: argVal) >= valueBeyondInt]]].
  	castToLong
  		ifTrue:
  			[rcvr isConstant
  				ifTrue:
  					[self emitCExpression: rcvr on: aStream.
  					 aStream nextPutAll: 'LL']
  				ifFalse:
  					[aStream nextPutAll: '((unsigned long)'.
  					 self emitCExpression: rcvr on: aStream.
  					 aStream nextPut: $)]]
  		ifFalse:
  			[self emitCExpression: rcvr on: aStream].
  	aStream nextPutAll: ' << '.
  	self emitCExpression: arg on: aStream!



More information about the Vm-dev mailing list