Hi All,<div><br></div><div>    just a note that once Compiler-nice.186 is installed, which inlines #repeat, one needs to recompile all senders of repeat to avoid having the decompiler crap out on you, e.g. in the debugger.  For example the compilation of</div>
<div><br></div><div>GeneratorTest methods for generators</div><div><div>fibonacciSequence</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&quot;Yields an infinite sequence of fibonacci numbers.&quot;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>^ Generator on: [ :generator |</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>| a b |</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>a := 0. b := 1.</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>[ a := b + (b := a).</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>  generator yield: a ]</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>repeat ]</div></div><div><br></div><div>with non-inlined repeat:</div><div><div><span class="Apple-tab-span" style="white-space:pre">        </span>pushLit: Generator</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>closureNumCopied: 0 numArgs: 1 bytes 34 to 72</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>pushConstant: nil</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>push: (Array new: 2)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>popIntoTemp: 1</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>pushConstant: 0</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>popIntoTemp: 0 inVectorAt: 1</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>pushConstant: 1</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>popIntoTemp: 1 inVectorAt: 1</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>pushTemp: 0</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>pushTemp: 1</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>closureNumCopied: 2 numArgs: 0 bytes 52 to 70</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>pushTemp: 1 inVectorAt: 1</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>pushTemp: 0 inVectorAt: 1</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>storeIntoTemp: 1 inVectorAt: 1</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>send: #+ (1 arg)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>popIntoTemp: 0 inVectorAt: 1</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>pushTemp: 0</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>pushTemp: 0 inVectorAt: 1</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>send: #yield: (1 arg)</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>blockReturn</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>send: #repeat (0 args)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>blockReturn</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>send: #on: (1 arg)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>returnTop</div>
</div><div><br></div><div>with inlined repeat:</div><div><div><span class="Apple-tab-span" style="white-space:pre">        </span>pushLit: Generator</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>closureNumCopied: 0 numArgs: 1 bytes 34 to 53</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>pushConstant: nil</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>pushConstant: nil</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>pushConstant: 0</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>popIntoTemp: 1</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>pushConstant: 1</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>popIntoTemp: 2</div>
<div><span class="Apple-tab-span" style="white-space: pre; ">        </span>L1:</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>pushTemp: 2</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>pushTemp: 1</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>storeIntoTemp: 2</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>send: #+ (1 arg)</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>popIntoTemp: 1</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>pushTemp: 0</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>pushTemp: 1</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>send: #yield: (1 arg)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>pop</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>jumpTo: L1</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>pushConstant: nil</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>blockReturn</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>send: #on: (1 arg)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>returnTop</div>
</div><div><br></div><div><br></div><div>will cause the decompiler to fail horribly if the non-inlined result is decompiled with Compiler-nice.186 installed.  The fix is merely to recompile it (and other senders of #repeat).  The underlying problem is that if the is given temp names via a schematicTempNamesString then that string must match the temps in the method, and in the above if repeat is not inlined a and b are remote, and hence the schematicTempNamesString is [generator (a b)] but if repeat is inlined then they are local and the schematicTempNamesString is [generator a b].</div>
<div><br></div><div>BTW, kudos to Nicholas for the newParser/newCompiler changes!</div><div><br></div><div>best</div><div>Eliot</div>