[Vm-dev] VM Maker: VMMaker.oscog-eem.2064.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Dec 31 22:48:29 UTC 2016


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2064.mcz

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

Name: VMMaker.oscog-eem.2064
Author: eem
Time: 31 December 2016, 2:47:35.497669 pm
UUID: 732488bd-fbde-43e8-b942-4ca3e05e53a6
Ancestors: VMMaker.oscog-eem.2063

SmartSyntaxPlugin Slang:
And don't generate the return guard if there's nothing to guard.

=============== Diff against VMMaker.oscog-eem.2063 ===============

Item was changed:
  ----- Method: SmartSyntaxPluginTMethod>>fixUpReturnOneStmt:on: (in category 'transforming') -----
  fixUpReturnOneStmt: stmt on: sStream
  
  	stmt isReturn ifFalse: [^sStream nextPut: stmt].
  	(stmt expression isSend
  	 and: [#('primitiveFail' 'primitiveFailFor:') includes: stmt expression selector]) ifTrue: 
  		["failure return"
  		 sStream nextPut: stmt expression.
  		 sStream nextPut: self nullReturnExpr.
  		 ^nil].
  	(stmt expression isVariable and: ['nil' = stmt expression name]) ifTrue: 
  		["^ nil -- this is never right unless automatically generated"
  		 sStream nextPut: stmt.
  		 ^nil].
  	(stmt expression isVariable and: ['self' = stmt expression name]) ifTrue: 
  		["^ self"
  		 self generateFailureGuardOn: sStream.
  		 fullArgs isEmpty ifFalse:[ sStream nextPut: (self popExpr: fullArgs size)].
  		 sStream nextPut: self nullReturnExpr.
  		 ^nil].
  	(stmt expression isVariable | stmt expression isConstant | suppressingFailureGuards) ifTrue:
  		["^ variable or ^ constant or ^ expr without guardchecking"
  		 self generateFailureGuardOn: sStream.
  		 sStream nextPut: (self pop: fullArgs size + 1 thenReturnExpr: stmt expression).
  		 sStream nextPut: self nullReturnExpr.
  		 ^nil].
  	"^ expr with necessary guard checking"
+ 	sStream isEmpty ifFalse: [self generateFailureGuardOn: sStream].
- 	self generateFailureGuardOn: sStream.
  	(self resultExpressionAlwaysFails: stmt expression)
  		ifTrue:
  			[sStream nextPut: stmt expression]
  		ifFalse:
  			[sStream nextPut: (self assign: (self oopVariable: '_return_value') expression: stmt expression).
  			 (self resultExpressionCanFail: stmt expression) ifTrue:
  				[self generateFailureGuardOn: sStream].
  			 sStream nextPut: (self pop: fullArgs size + 1 thenReturnExpr: (self oopVariable: '_return_value'))].
  	sStream nextPut: self nullReturnExpr!



More information about the Vm-dev mailing list