Spaces:
Running
Running
File size: 1,090 Bytes
8f3f8db |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
*vmmakerjs
emitJSCodeOn: aStream level: level generator: aCodeGen
expression isSwitch ifTrue:
[^expression emitJSCodeOn: aStream addToEndOfCases: self level: level generator: aCodeGen].
(self isVariableUpdatingAssignment and: [(aCodeGen isPointer: variable) not])
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.
aStream nextPutAll: ' = '.
expression emitJSCodeAsArgumentOn: aStream level: level generator: aCodeGen.
coerceToInt ifTrue: [aStream nextPutAll: '|0'].] |