<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Feb 26, 2017 at 9:22 AM, Eliot Miranda <span dir="ltr"><<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"> <br><div dir="ltr">Hi Ronie, (Hi Clément),<div><br></div><div>   for a while now Clément and I have been unhappy about optStatus (CogSSOptStatus).  Now that the RegisterAllocatingCogit is nearly working it's clear that a much nicer approach is to give CogSimStackEntry a liveRegister instance variable and have simSelf take the place of optStatus, so that what were</div><div><br></div><div>    optStatus isReceiverResultRegLive</div>    optStatus isReceiverResultRegLive: true<div>    optStatus isReceiverResultRegLive: false</div><div><br></div><div>are replaced by</div><div><br></div><div>    simSelf liveRegister = ReceiverResultReg<br><div class="gmail-m_-4008787636863379655m_3636718100182687936gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate">    simSelf liveRegister: ReceiverResultReg <br>    simSelf liveRegister: NoReg</span></div><div><span style="font-size:small;border-collapse:separate"><br></span></div><div><span style="font-size:small;border-collapse:separate">To this end can you rewrite the Lowcode code generator so that e.g. the following</span></div></div></div></div></div></blockquote><div><br></div><div>Easier to compare for the casual viewer... </div><div><a href="https://www.diffchecker.com/qF8tWcsT">https://www.diffchecker.com/qF8tWcsT</a></div><div><br></div><div>cheers -ben</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div class="gmail-m_-4008787636863379655m_3636718100182687936gmail_signature"><div dir="ltr"><div><br></div><div><div>genLowcodeAlloca32</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">      </span><option: #LowcodeVM><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">      </span>"Lowcode instruction generator"</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">        </span>| size |</div><div><br></div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">        </span>(size := backEnd availableRegisterOrNoneFor: self liveRegisters) = NoReg ifTrue:</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">         </span>[self ssAllocateRequiredReg:</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">                     </span>(size := optStatus isReceiverResultRegLive</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">                               </span>ifTrue: [Arg0Reg]</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">                                </span>ifFalse: [ReceiverResultReg])].</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>size = ReceiverResultReg ifTrue:</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">         </span>[ optStatus isReceiverResultRegLive: false ].</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">    </span>self ssNativeTop nativePopToReg: size.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>self ssNativePop: 1.</div><div><br></div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">    </span>self MoveAw: coInterpreter nativeStackPointerAddress R: TempReg.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>self SubR: size R: TempReg.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">      </span>self AndCq: -16 R: TempReg.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">      </span>self MoveR: TempReg R: size.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>self MoveR: size Aw: coInterpreter nativeStackPointerAddress.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">    </span>self ssPushNativeRegister: size.</div><div><br></div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">        </span>^ 0</div><div><br></div></div><div>reads something more like</div><div><br></div><div>genLowcodeAlloca32</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">       </span><option: #LowcodeVM><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">      </span>"Lowcode instruction generator"</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">        </span>| size |</div><div><br></div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">        self allocateOneRegisterForLowcodeI<wbr>nto: [:reg| size := reg]</span>.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>self ssNativeTop nativePopToReg: size.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>self ssNativePop: 1.</div><div><br></div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">    </span>self MoveAw: coInterpreter nativeStackPointerAddress R: TempReg.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>self SubR: size R: TempReg.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">      </span>self AndCq: -16 R: TempReg.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">      </span>self MoveR: TempReg R: size.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>self MoveR: size Aw: coInterpreter nativeStackPointerAddress.</div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">    </span>self ssPushNativeRegister: size.</div><div><br></div><div><span class="gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">        </span>^ 0</div></div></div></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><div class="gmail-m_-4008787636863379655m_3636718100182687936gmail_signature"><div dir="ltr"><div><br></div><div>etc?  So there are <span style="white-space:pre-wrap">allocateOneRegisterForLowc<wbr>odeInto: through allocateThreeRegistersForLowco<wbr>deInto:.  This way it'll be much easier to make the above change which I'm making now.</span></div><div> </div><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>
<br></blockquote></div><br></div></div>