Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.494.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.494 Author: eem Time: 1 November 2013, 8:24:00.412 pm UUID: 85c763bf-2961-4872-becd-77a7ca626a8a Ancestors: VMMaker.oscog-eem.493
Improve dead-code elimination to exprs like false or: [false].
=============== Diff against VMMaker.oscog-eem.493 ===============
Item was changed: ----- Method: CCodeGenerator>>nilOrBooleanConstantReceiverOf: (in category 'utilities') ----- + nilOrBooleanConstantReceiverOf: aNode + "Answer nil or the boolean constant that is the receiver of the given message send. + Used to suppress conditional code when the condition is a translation-time constant." - nilOrBooleanConstantReceiverOf: sendNode - "Answer nil or the boolean constant that is the receiver of the given message send. Used to suppress conditional code when the condition is a translation-time constant."
+ | rcvr | - | rcvr val | generateDeadCode ifTrue:[^nil]. + rcvr := aNode isSend ifTrue: [aNode receiver] ifFalse: [aNode]. + (rcvr isConstant + and: [#(true false) includes: rcvr value]) ifTrue: + [^rcvr value]. + (rcvr isSend + and: [(#(or: and:) includes: rcvr selector) + and: [rcvr args last isStmtList + and: [rcvr args last statements size = 1]]]) ifTrue: + [(self nilOrBooleanConstantReceiverOf: rcvr receiver) ifNotNil: + [:rcvrRcvr| + (self nilOrBooleanConstantReceiverOf: rcvr args last statements first) ifNotNil: + [:rcvrArg| + ^rcvrRcvr perform: rcvr selector with: rcvrArg]]]. + ^nil - rcvr := sendNode receiver. - rcvr isConstant ifTrue: [ - val := rcvr value. - ((val == true) or: [val == false]) ifTrue: [^ val]]. - ^ nil !
vm-dev@lists.squeakfoundation.org