[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