[squeak-dev] The Trunk: Compiler-eem.391.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Aug 21 22:38:04 UTC 2018


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



More information about the Squeak-dev mailing list