Bert Freudenberg uploaded a new version of VMMakerJS to project VM Maker: http://source.squeak.org/VMMaker/VMMakerJS-bf.15.mcz
==================== Summary ====================
Name: VMMakerJS-bf.15 Author: bf Time: 3 November 2014, 1:50:19.372 pm UUID: fd4e10f2-3773-4e80-8bb5-c4b471a014e5 Ancestors: VMMakerJS-bf.14
Do not put extra parens around function calls
=============== Diff against VMMakerJS-bf.14 ===============
Item was changed: ----- Method: JSCodeGenerator>>emitJSExpression:on: (in category 'JS code generator') ----- emitJSExpression: aParseNode on: aStream "Emit C code for the expression described by the given parse node."
+ aParseNode isLeafOrFunc - aParseNode isLeaf ifTrue: ["omit parens" aParseNode emitJSCodeAsExpressionOn: aStream level: 0 generator: self] ifFalse: [aStream nextPut: $(. aParseNode emitJSCodeAsExpressionOn: aStream level: 0 generator: self. aStream nextPut: $)]!
Item was changed: ----- Method: JSCodeGenerator>>generateAt:on:indent: (in category 'JS translation') ----- generateAt: msgNode on: aStream indent: level "Generate the JS code for this message onto the given stream." | arrayNode indexNode subtractOne complex | arrayNode := msgNode receiver. indexNode := msgNode args first. subtractOne := self isOneBasedArray: arrayNode name in: currentMethod. (subtractOne and: [indexNode isPlusOne]) ifTrue: [ subtractOne := false. indexNode := indexNode receiver. "remove + 1" ]. + complex := subtractOne and: [indexNode isLeafOrFunc not]. - complex := subtractOne and: [indexNode isLeaf not]. self emitJSExpression: arrayNode on: aStream. aStream nextPut: $[. complex ifTrue: [aStream nextPut: $(]. indexNode emitJSCodeAsExpressionOn: aStream level: level + 1 generator: self. complex ifTrue: [aStream nextPut: $)]. subtractOne ifTrue: [aStream nextPutAll: ' - 1']. aStream nextPut: $].!
Item was changed: ----- Method: JSCodeGenerator>>generateMath:on:indent: (in category 'JS translation') ----- generateMath: msgNode on: aStream indent: level "Generate the JS code for the message onto the given stream." aStream nextPutAll: 'Math.'; nextPutAll: msgNode selector; nextPut: $(. + msgNode receiver emitJSCodeAsExpressionOn: aStream level: 0 generator: self. - self emitJSExpression: msgNode receiver on: aStream. aStream nextPut: $). !
Item was added: + ----- Method: TParseNode>>isLeafOrFunc (in category '*vmmakerjs') ----- + isLeafOrFunc + ^self isLeaf!
Item was added: + ----- Method: TSendNode>>isLeafOrFunc (in category '*vmmakerjs') ----- + isLeafOrFunc + selector precedence = 2 ifTrue: [^false]. + (#(and: or: bitAnd: bitOr: bitXor: bitShift:) includes: selector) ifTrue: [^false]. + ^true!
vm-dev@lists.squeakfoundation.org