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

Tobias Pape Das.Linux at gmx.de
Fri Mar 23 08:20:59 UTC 2018


Hi Eliot,


loading .380  produces an error for me in #allLiterals.

I think this is because of the Encoder being used for changing the encoder?
we need a few thing here probably:
 1. remove .380
 2. a commit that _Adds_ the new inst var (iirc this is .379 already)
 3. an mcm for that (iirc this is .431.mcm)
 4. remove config .432.mcm
 5. a commit that _uses_ the new inst var
 6. an mcm for that (a _new_ .432.mcm)
 7. a commit that _Removes_ the old inst var.
 (8. maybe an mcm for that..)

Best regards
	-Tobias




> On 20.03.2018, at 23:30, commits at source.squeak.org <mailto:commits at source.squeak.org> wrote:
> 
> Eliot Miranda uploaded a new version of Compiler to project The Trunk:
> http://source.squeak.org/trunk/Compiler-eem.380.mcz <http://source.squeak.org/trunk/Compiler-eem.380.mcz>
> 
> ==================== Summary ====================
> 
> Name: Compiler-eem.380
> Author: eem
> Time: 20 March 2018, 3:30:10.256928 pm
> UUID: 3133d60f-54b2-410e-92ae-ef5cc782ab9c
> Ancestors: Compiler-eem.379
> 
> Rename Encoder's addedSelectorAndMethodClassLiterals, a name which is now misleading given the new full block support, to addedExtraLiterals.  Requires Compiler-eem.379.
> 
> =============== Diff against Compiler-eem.379 ===============
> 
> Item was changed:
>  ----- Method: BytecodeEncoder>>allLiteralsForBlockMethod (in category 'results') -----
>  allLiteralsForBlockMethod
> + 	addedExtraLiterals ifFalse:
> + 		[addedExtraLiterals := true.
> - 	"N.B. addedSelectorAndMethodClassLiterals is a misnomer.  It should be something like
> - 	 addedImplicitLiterals or addedExtraLiterals."
> - 	addedSelectorAndMethodClassLiterals ifFalse:
> - 		[addedSelectorAndMethodClassLiterals := true.
>  		"Put the optimized selectors in literals so as to browse senders more easily"
>  		optimizedSelectors := optimizedSelectors reject: [:e| literalStream originalContents hasLiteral: e].
>  		optimizedSelectors isEmpty ifFalse: [
>  			"Use one entry per literal if enough room, else make anArray"
>  			literalStream position + optimizedSelectors size + 2 >= self maxNumLiterals
>  				ifTrue: [self litIndex: optimizedSelectors asArray]
>  				ifFalse: [optimizedSelectors do: [:e | self litIndex: e]]].
>  		"Add a slot for outerCode"
>  		self litIndex: nil].
>  	^literalStream contents!
> 
> Item was changed:
>  ----- Method: BytecodeEncoder>>resetForFullBlockGeneration (in category 'code generation') -----
>  resetForFullBlockGeneration
>  	literalStream := WriteStream on: (Array new: 8).
> + 	addedExtraLiterals := false.
> - 	addedSelectorAndMethodClassLiterals := addedExtraLiterals := false.
>  	optimizedSelectors := Set new!
> 
> Item was changed:
>  ----- Method: BytecodeEncoder>>resetLiteralStreamForFullBlock (in category 'code generation') -----
>  resetLiteralStreamForFullBlock
>  	literalStream := WriteStream on: (Array new: 32).
> + 	addedExtraLiterals := false.
> - 	addedSelectorAndMethodClassLiterals := addedExtraLiterals := false.
>  	optimizedSelectors := Set new!
> 
> Item was changed:
>  ParseNode subclass: #Encoder
> + 	instanceVariableNames: 'scopeTable nTemps supered requestor class selector literalStream selectorSet litIndSet litSet sourceRanges globalSourceRanges addedExtraLiterals optimizedSelectors cue'
> - 	instanceVariableNames: 'scopeTable nTemps supered requestor class selector literalStream selectorSet litIndSet litSet sourceRanges globalSourceRanges addedSelectorAndMethodClassLiterals optimizedSelectors cue'
>  	classVariableNames: ''
>  	poolDictionaries: ''
>  	category: 'Compiler-Kernel'!
> 
>  !Encoder commentStamp: 'cwp 12/26/2012 23:29' prior: 0!
>  I encode names and literals into tree nodes with byte codes for the compiler. Byte codes for literals are not assigned until the tree-sizing pass of the compiler, because only then is it known which literals are actually needed. I also keep track of sourceCode ranges during parsing and code generation so I can provide an inverse map for the debugger.!
> 
> Item was changed:
>  ----- Method: Encoder>>allLiterals (in category 'results') -----
>  allLiterals
> + 	addedExtraLiterals ifFalse:
> + 		[addedExtraLiterals := true.
> - 	addedSelectorAndMethodClassLiterals ifFalse:
> - 		[addedSelectorAndMethodClassLiterals := true.
>  		"Put the optimized selectors in literals so as to browse senders more easily"
>  		optimizedSelectors := optimizedSelectors reject: [:e| literalStream originalContents hasLiteral: e].
>  		optimizedSelectors isEmpty ifFalse: [
>  			"Use one entry per literal if enough room, else make anArray"
>  			literalStream position + optimizedSelectors size + 2 >= self maxNumLiterals
>  				ifTrue: [self litIndex: optimizedSelectors asArray]
>  				ifFalse: [optimizedSelectors do: [:e | self litIndex: e]]].
>  		"Add a slot for selector or MethodProperties"
>  		self litIndex: nil.
>  		self litIndex: self associationForClass].
>  	^literalStream contents!
> 
> Item was changed:
>  ----- Method: Encoder>>initScopeAndLiteralTables (in category 'initialize-release') -----
>  initScopeAndLiteralTables
> 
>  	scopeTable := StdVariables copy.
>  	litSet := StdLiterals copy.
>  	"comments can be left hanging on nodes from previous compilations.
>  	 probably better than this hack fix is to create the nodes afresh on each compilation."
>  	scopeTable do:
>  		[:varNode| varNode comment: nil].
>  	litSet do:
>  		[:varNode| varNode comment: nil].
>  	selectorSet := StdSelectors copy.
>  	litIndSet := Dictionary new: 16.
>  	literalStream := WriteStream on: (Array new: 32).
> + 	addedExtraLiterals := false.
> - 	addedSelectorAndMethodClassLiterals := addedExtraLiterals := false.
>  	optimizedSelectors := Set new!
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20180323/e4cb773d/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Bildschirmfoto 2018-03-23 um 09.02.37.PNG
Type: image/png
Size: 702521 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20180323/e4cb773d/attachment-0001.png>


More information about the Squeak-dev mailing list