Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.391.mcz==================== Summary ====================
Name: Compiler-eem.391
Author: eem
Time: 21 August 2018, 3:37:49.438481 pm
UUID: 95e267a4-cfe8-4aa4-8e83-876603470983
Ancestors: Compiler-bf.390
Fix pc highlighting for ifNil:[ifNotNil:] et al, as in {char ifNil: [ Error signal ]} in
| str char |
str := '1234' readStream.
char := str next.
char ifNil: [ Error signal ].
char caseOf: {
[$4] -> ['four'].
[$3] -> ['three' asUppercase].
[$2] -> ['two'].
[$1] -> ['one' asUppercase].
} otherwise: [ 'No' ].
=============== Diff against Compiler-bf.390 ===============
Item was changed:
----- Method: MessageNode>>emitCodeForIfNil:encoder:value: (in category 'code generation') -----
emitCodeForIfNil: stack encoder: encoder value: forValue
| theNode theSize ifNotNilSelector |
theNode := arguments first.
theSize := sizes at: 1.
ifNotNilSelector := #ifNotNil:.
receiver emitCodeForValue: stack encoder: encoder.
forValue ifTrue: [encoder genDup. stack push: 1].
encoder genPushSpecialLiteral: nil. stack push: 1.
equalNode emitCode: stack args: 1 encoder: encoder.
+ pc := encoder pc.
self
emitCodeForBranchOn: (selector key == ifNotNilSelector)
dist: theSize
pop: stack
encoder: encoder.
- pc := encoder pc.
forValue
ifTrue:
[encoder genPop. stack pop: 1.
theNode emitCodeForEvaluatedValue: stack encoder: encoder]
ifFalse: [theNode emitCodeForEvaluatedEffect: stack encoder: encoder]!