[Vm-dev] VM Maker: VMMakerJS-bf.13.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Oct 21 18:41:10 UTC 2014


Bert Freudenberg uploaded a new version of VMMakerJS to project VM Maker:
http://source.squeak.org/VMMaker/VMMakerJS-bf.13.mcz

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

Name: VMMakerJS-bf.13
Author: bf
Time: 21 October 2014, 11:40:37.642 am
UUID: 36eab1e9-25b2-414b-b7e6-4d54dd7c120c
Ancestors: VMMakerJS-bf.12

Fix float-int conversion for Kedama

=============== Diff against VMMakerJS-bf.12 ===============

Item was changed:
  ----- Method: TAssignmentNode>>emitJSCodeOn:level:generator: (in category '*vmmakerjs') -----
  emitJSCodeOn: aStream level: level generator: aCodeGen
  	expression isSwitch ifTrue:
  		[^expression emitJSCodeOn: aStream addToEndOfCases: self level: level generator: aCodeGen].
  	self isVariableUpdatingAssignment
  		ifTrue:
  			[(expression args first isConstant and: [expression args first value = 1])
  				ifTrue: [aStream nextPutAll: expression selector, expression selector.
  					variable emitJSCodeOn: aStream level: level generator: aCodeGen]
  				ifFalse: [
  					variable emitJSCodeOn: aStream level: level generator: aCodeGen.
  					aStream nextPutAll: ' ', expression selector, '= '.
  					expression args first emitJSCodeAsArgumentOn: aStream level: level generator: aCodeGen]]
  		ifFalse:
+ 			[ | coerceToInt |
+ 			coerceToInt := (variable isFloatIn: aCodeGen) not and: [expression isFloatIn: aCodeGen].
+ 			variable emitJSCodeOn: aStream level: level generator: aCodeGen.
- 			[variable emitJSCodeOn: aStream level: level generator: aCodeGen.
  			aStream nextPutAll: ' = '.
+ 			expression emitJSCodeAsArgumentOn: aStream level: level generator: aCodeGen.
+ 			coerceToInt ifTrue: [aStream nextPutAll: '|0'].]!
- 			expression emitJSCodeAsArgumentOn: aStream level: level generator: aCodeGen]!

Item was added:
+ ----- Method: TAssignmentNode>>isFloatIn: (in category '*vmmakerjs') -----
+ isFloatIn: aCodeGen
+ 	^variable isFloatIn: aCodeGen!

Item was added:
+ ----- Method: TConstantNode>>isFloatIn: (in category '*vmmakerjs') -----
+ isFloatIn: aCodeGen
+ 	^value isFloat!

Item was added:
+ ----- Method: TSendNode>>isFloatIn: (in category '*vmmakerjs') -----
+ isFloatIn: aCodeGen
+ 	selector precedence = 2 ifFalse: [^false].
+ 	^ (receiver isFloatIn: aCodeGen)
+ 		or: [arguments first isFloatIn: aCodeGen]!

Item was added:
+ ----- Method: TVariableNode>>isFloatIn: (in category '*vmmakerjs') -----
+ isFloatIn: aCodeGen
+ 	| type |
+ 	type := aCodeGen typeOfVariable: name.
+ 	type isNil ifTrue: [^false].
+ 	(type includes: $*) ifTrue: [^false].
+ 	(type beginsWithAnyOf: #('register ' 'static ')) ifTrue: [type := type copyAfter: $ ].
+ 	(type beginsWithAnyOf: #('double ' 'float ')) ifTrue: [^true].
+ 	(type beginsWithAnyOf: #('int ' 'unsigned ' 'sqInt ' 'usqInt ' 'var ')) ifTrue: [^false].
+ 	self halt: 'need to handle ', type!



More information about the Vm-dev mailing list