[squeak-dev] The Trunk: Compiler-ul.329.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Feb 27 01:05:26 UTC 2017


Levente Uzonyi uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-ul.329.mcz

==================== Summary ====================

Name: Compiler-ul.329
Author: ul
Time: 27 February 2017, 2:04:49.47425 am
UUID: df499238-217a-4e1c-a710-77577e4df261
Ancestors: Compiler-nice.328

- omit ifAbsent from #index* sends when it would use the default value, 0

=============== Diff against Compiler-nice.328 ===============

Item was changed:
  ----- Method: EncoderForV3>>genPushSpecialLiteral: (in category 'bytecode generation') -----
  genPushSpecialLiteral: aLiteral
  	"112-119 	01110iii 	Push (receiver, true, false, nil, -1, 0, 1, 2) [iii]"
  	| index |
+ 	index := #(true false nil -1 0 1 2) indexOf: aLiteral.
- 	index := #(true false nil -1 0 1 2) indexOf: aLiteral ifAbsent: 0.
  	index = 0 ifTrue:
  		[^self error: 'push special literal: ', aLiteral printString,  ' is not one of true false nil -1 0 1 2'].
  	stream nextPut: index + 112!

Item was changed:
  ----- Method: EncoderForV3>>genReturnSpecialLiteral: (in category 'bytecode generation') -----
  genReturnSpecialLiteral: aLiteral
  	"120-123 	011110ii 	Return (receiver, true, false, nil) [ii] From Message"
  	| index |
+ 	index := #(true false nil) indexOf: aLiteral.
- 	index := #(true false nil) indexOf: aLiteral ifAbsent: 0.
  	index = 0 ifTrue:
  		[^self error: 'return special literal: ', aLiteral printString,  ' is not one of true false nil'].
  	stream nextPut: 120 + index!

Item was changed:
  ----- Method: Parser>>removeEmptyTempDeclarationsFrom: (in category 'error correction') -----
  removeEmptyTempDeclarationsFrom: methodNode
  
  	| sourceCode madeChanges tempsMarkHolder |
  	sourceCode := cue requestor text asString.
  	tempsMarkHolder := self collectTemporaryDeclarationsFrom: methodNode.
  	madeChanges := false.
  	tempsMarkHolder do: [ :currentBlock | | tempsMarkChar0 tempsMarkChar1 tempsMarkChar2 end start |
  		tempsMarkChar0 := (sourceCode at: currentBlock tempsMark).
  		tempsMarkChar1 := (sourceCode at: currentBlock tempsMark - 1).
  		tempsMarkChar2 := (sourceCode at: currentBlock tempsMark - 2).
  		tempsMarkChar0 = $| & tempsMarkChar1 = $| 
  			ifTrue: 
  				[ end := currentBlock tempsMark. 
  				start := end - 1].
  		tempsMarkChar0 = $| & tempsMarkChar1 = $  & tempsMarkChar2 = $| 
  			ifTrue: 
  				[ end := currentBlock tempsMark. 
  				start := end - 2].
  		
  		start notNil & end notNil ifTrue: [
  			| lineStart lineEnd |
  			lineStart := 1 + (sourceCode 
  				lastIndexOf: Character cr 
+ 				startingAt: start - 1).
- 				startingAt: start - 1
- 				ifAbsent: [ 0 ]).
  			lineEnd := sourceCode 
  				indexOf: Character cr
  				startingAt: end + 1
  				ifAbsent: [ sourceCode size ].
  			((sourceCode indexOfAnyOf: CharacterSet nonSeparators startingAt: lineStart) >= start 
  				and: [ (sourceCode indexOfAnyOf: CharacterSet nonSeparators startingAt: end + 1) > lineEnd ]) ifTrue: [
  					start := lineStart.
  					end := lineEnd ].
  			cue requestor correctFrom: start to: end with: ''.
  			madeChanges := true.
  			currentBlock tempsMark: nil ] ].
  	madeChanges ifTrue: [ReparseAfterSourceEditing signal]!



More information about the Squeak-dev mailing list