The Trunk: Compiler-eem.391.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Compiler-eem.391.mcz

commits-2
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]!