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!