<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>Hi Tobias,</div><div id="AppleMailSignature"><br></div><div id="AppleMailSignature">as the commit comments says, you must first load <span style="background-color: rgba(255, 255, 255, 0);">Compiler-eem.379</span>.  The update steam contains an update for it.  And its commit comment explains the issue:</div><div id="AppleMailSignature"><br></div><div id="AppleMailSignature"><span style="background-color: rgba(255, 255, 255, 0);">Name: Compiler-eem.379<br>Author: eem<br>Time: 20 March 2018, 3:27:27.12646 pm<br>UUID: b3856f24-9d98-478a-936f-c6d24d667be4<br>Ancestors: Compiler-eem.378<br><br>Add initialization of the Undeclared variable addedExtraLiterals which is soon to be a replacement for Encoder's addedSelectorAndMethodClassLiterals, a name which is now misleading given the new full block support.  By adding the initialization of the Undeclared variable the compiler is not broken as the instance variable is renamed and Encoder's methods are recompiled.</span><br><br><span style="background-color: rgba(255, 255, 255, 0);">_,,,^..^,,,_ (phone)</span></div><div><br>On Mar 23, 2018, at 1:20 AM, Tobias Pape <<a href="mailto:Das.Linux@gmx.de">Das.Linux@gmx.de</a>> wrote:<br><br></div><blockquote type="cite"><div><meta http-equiv="Content-Type" content="text/html charset=us-ascii">Hi Eliot,<div class=""><br class=""></div><div class=""><br class=""></div><div class="">loading .380  produces an error for me in #allLiterals.</div><div class=""><br class=""></div><div class="">I think this is because of the Encoder being used for changing the encoder?</div><div class="">we need a few thing here probably:</div><div class=""> 1. remove .380</div><div class=""> 2. a commit that _Adds_ the new inst var (iirc this is .379 already)</div><div class=""> 3. an mcm for that (iirc this is .431.mcm)</div><div class=""> 4. remove config .432.mcm</div><div class=""> 5. a commit that _uses_ the new inst var</div><div class=""> 6. an mcm for that (a _new_ .432.mcm)</div><div class=""> 7. a commit that _Removes_ the old inst var.</div><div class=""> (8. maybe an mcm for that..)</div><div class=""><br class=""></div><div class="">Best regards</div><div class=""><span class="Apple-tab-span" style="white-space:pre">    </span>-Tobias</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><Bildschirmfoto 2018-03-23 um 09.02.37.PNG><br class=""><blockquote type="cite" class="">On 20.03.2018, at 23:30, <a href="mailto:commits@source.squeak.org" class="">commits@source.squeak.org</a> wrote:<br class=""><br class="">Eliot Miranda uploaded a new version of Compiler to project The Trunk:<br class=""><a href="http://source.squeak.org/trunk/Compiler-eem.380.mcz" class="">http://source.squeak.org/trunk/Compiler-eem.380.mcz</a><br class=""><br class="">==================== Summary ====================<br class=""><br class="">Name: Compiler-eem.380<br class="">Author: eem<br class="">Time: 20 March 2018, 3:30:10.256928 pm<br class="">UUID: 3133d60f-54b2-410e-92ae-ef5cc782ab9c<br class="">Ancestors: Compiler-eem.379<br class=""><br class="">Rename Encoder's addedSelectorAndMethodClassLiterals, a name which is now misleading given the new full block support, to addedExtraLiterals.  Requires Compiler-eem.379.<br class=""><br class="">=============== Diff against Compiler-eem.379 ===============<br class=""><br class="">Item was changed:<br class=""> ----- Method: BytecodeEncoder>>allLiteralsForBlockMethod (in category 'results') -----<br class=""> allLiteralsForBlockMethod<br class="">+ <span class="Apple-tab-span" style="white-space:pre">   </span>addedExtraLiterals ifFalse:<br class="">+ <span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>[addedExtraLiterals := true.<br class="">- <span class="Apple-tab-span" style="white-space:pre">    </span>"N.B. addedSelectorAndMethodClassLiterals is a misnomer.  It should be something like<br class="">- <span class="Apple-tab-span" style="white-space:pre"> </span> addedImplicitLiterals or addedExtraLiterals."<br class="">- <span class="Apple-tab-span" style="white-space:pre">        </span>addedSelectorAndMethodClassLiterals ifFalse:<br class="">- <span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>[addedSelectorAndMethodClassLiterals := true.<br class=""> <span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>"Put the optimized selectors in literals so as to browse senders more easily"<br class=""> <span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>optimizedSelectors := optimizedSelectors reject: [:e| literalStream originalContents hasLiteral: e].<br class=""> <span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>optimizedSelectors isEmpty ifFalse: [<br class=""> <span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>"Use one entry per literal if enough room, else make anArray"<br class=""> <span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>literalStream position + optimizedSelectors size + 2 >= self maxNumLiterals<br class=""> <span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>ifTrue: [self litIndex: optimizedSelectors asArray]<br class=""> <span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>ifFalse: [optimizedSelectors do: [:e | self litIndex: e]]].<br class=""> <span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>"Add a slot for outerCode"<br class=""> <span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>self litIndex: nil].<br class=""> <span class="Apple-tab-span" style="white-space:pre">     </span>^literalStream contents!<br class=""><br class="">Item was changed:<br class=""> ----- Method: BytecodeEncoder>>resetForFullBlockGeneration (in category 'code generation') -----<br class=""> resetForFullBlockGeneration<br class=""> <span class="Apple-tab-span" style="white-space:pre">       </span>literalStream := WriteStream on: (Array new: 8).<br class="">+ <span class="Apple-tab-span" style="white-space:pre">        </span>addedExtraLiterals := false.<br class="">- <span class="Apple-tab-span" style="white-space:pre">    </span>addedSelectorAndMethodClassLiterals := addedExtraLiterals := false.<br class=""> <span class="Apple-tab-span" style="white-space:pre">      </span>optimizedSelectors := Set new!<br class=""><br class="">Item was changed:<br class=""> ----- Method: BytecodeEncoder>>resetLiteralStreamForFullBlock (in category 'code generation') -----<br class=""> resetLiteralStreamForFullBlock<br class=""> <span class="Apple-tab-span" style="white-space:pre">   </span>literalStream := WriteStream on: (Array new: 32).<br class="">+ <span class="Apple-tab-span" style="white-space:pre">       </span>addedExtraLiterals := false.<br class="">- <span class="Apple-tab-span" style="white-space:pre">    </span>addedSelectorAndMethodClassLiterals := addedExtraLiterals := false.<br class=""> <span class="Apple-tab-span" style="white-space:pre">      </span>optimizedSelectors := Set new!<br class=""><br class="">Item was changed:<br class=""> ParseNode subclass: #Encoder<br class="">+ <span class="Apple-tab-span" style="white-space:pre">        </span>instanceVariableNames: 'scopeTable nTemps supered requestor class selector literalStream selectorSet litIndSet litSet sourceRanges globalSourceRanges addedExtraLiterals optimizedSelectors cue'<br class="">- <span class="Apple-tab-span" style="white-space:pre">   </span>instanceVariableNames: 'scopeTable nTemps supered requestor class selector literalStream selectorSet litIndSet litSet sourceRanges globalSourceRanges addedSelectorAndMethodClassLiterals optimizedSelectors cue'<br class=""> <span class="Apple-tab-span" style="white-space:pre">   </span>classVariableNames: ''<br class=""> <span class="Apple-tab-span" style="white-space:pre">   </span>poolDictionaries: ''<br class=""> <span class="Apple-tab-span" style="white-space:pre">     </span>category: 'Compiler-Kernel'!<br class=""><br class=""> !Encoder commentStamp: 'cwp 12/26/2012 23:29' prior: 0!<br class=""> 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.!<br class=""><br class="">Item was changed:<br class=""> ----- Method: Encoder>>allLiterals (in category 'results') -----<br class=""> allLiterals<br class="">+ <span class="Apple-tab-span" style="white-space:pre">  </span>addedExtraLiterals ifFalse:<br class="">+ <span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>[addedExtraLiterals := true.<br class="">- <span class="Apple-tab-span" style="white-space:pre">    </span>addedSelectorAndMethodClassLiterals ifFalse:<br class="">- <span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>[addedSelectorAndMethodClassLiterals := true.<br class=""> <span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>"Put the optimized selectors in literals so as to browse senders more easily"<br class=""> <span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>optimizedSelectors := optimizedSelectors reject: [:e| literalStream originalContents hasLiteral: e].<br class=""> <span class="Apple-tab-span" style="white-space:pre">     </span><span class="Apple-tab-span" style="white-space:pre">    </span>optimizedSelectors isEmpty ifFalse: [<br class=""> <span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>"Use one entry per literal if enough room, else make anArray"<br class=""> <span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>literalStream position + optimizedSelectors size + 2 >= self maxNumLiterals<br class=""> <span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>ifTrue: [self litIndex: optimizedSelectors asArray]<br class=""> <span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span><span class="Apple-tab-span" style="white-space:pre">    </span>ifFalse: [optimizedSelectors do: [:e | self litIndex: e]]].<br class=""> <span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>"Add a slot for selector or MethodProperties"<br class=""> <span class="Apple-tab-span" style="white-space:pre">  </span><span class="Apple-tab-span" style="white-space:pre">    </span>self litIndex: nil.<br class=""> <span class="Apple-tab-span" style="white-space:pre">      </span><span class="Apple-tab-span" style="white-space:pre">    </span>self litIndex: self associationForClass].<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>^literalStream contents!<br class=""><br class="">Item was changed:<br class=""> ----- Method: Encoder>>initScopeAndLiteralTables (in category 'initialize-release') -----<br class=""> initScopeAndLiteralTables<br class=""><br class=""> <span class="Apple-tab-span" style="white-space:pre">   </span>scopeTable := StdVariables copy.<br class=""> <span class="Apple-tab-span" style="white-space:pre"> </span>litSet := StdLiterals copy.<br class=""> <span class="Apple-tab-span" style="white-space:pre">      </span>"comments can be left hanging on nodes from previous compilations.<br class=""> <span class="Apple-tab-span" style="white-space:pre">  </span> probably better than this hack fix is to create the nodes afresh on each compilation."<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>scopeTable do:<br class=""> <span class="Apple-tab-span" style="white-space:pre">   </span><span class="Apple-tab-span" style="white-space:pre">    </span>[:varNode| varNode comment: nil].<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>litSet do:<br class=""> <span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>[:varNode| varNode comment: nil].<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>selectorSet := StdSelectors copy.<br class=""> <span class="Apple-tab-span" style="white-space:pre">        </span>litIndSet := Dictionary new: 16.<br class=""> <span class="Apple-tab-span" style="white-space:pre"> </span>literalStream := WriteStream on: (Array new: 32).<br class="">+ <span class="Apple-tab-span" style="white-space:pre">       </span>addedExtraLiterals := false.<br class="">- <span class="Apple-tab-span" style="white-space:pre">    </span>addedSelectorAndMethodClassLiterals := addedExtraLiterals := false.<br class=""> <span class="Apple-tab-span" style="white-space:pre">      </span>optimizedSelectors := Set new!<br class=""><br class=""><br class=""></blockquote><br class=""></div></div></blockquote><blockquote type="cite"><div><span></span><br></div></blockquote></body></html>