<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">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=""><img apple-inline="yes" id="D1DD5549-F7AF-4F5A-B398-5FCF4BD15FA3" height="754" width="1273" apple-width="yes" apple-height="yes" class="" src="cid:B197A60E-39D7-47FC-A0D6-28DA44318AA7@hpi.uni-potsdam.de"><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></body></html>