[Vm-dev] VM Maker: VMMakerJS-bf.15.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Nov 3 12:52:13 UTC 2014
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!
More information about the Vm-dev
mailing list