<div dir="ltr">Hi Ronie,<br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Feb 26, 2017 at 4:50 PM, Ronie Salgado <span dir="ltr"><<a href="mailto:roniesalg@gmail.com" target="_blank">roniesalg@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"><div><div><div>Hi Eliot,<br><br></div>I will do it. In fact, I did not like the previous generated code because it has a bug. My only concern with that is when I need to allocate normal registers, and floating point registers. I guess that I would need to use more variations of <span style="white-space:pre-wrap">allocate*RegistersForLowcodeIn<wbr>to: .<br></span></div></div></div></blockquote><div><br></div><div>Yes, feel free to add as many variations as you need.</div><div><br></div><div>While you're at it it seems to me that the simNativeStackSize inst var of StackToRegisterMappingCogit and CogSSBytecodeFixup are unused.  If so, getting rid of it would  be a good idea, as the fixups have to be alloca'ed and so this var can add a significant ammount of space to the allocation, which can cause the JIT to not compile (see Cogit class var MaxStackAllocSize).</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><span style="white-space:pre-wrap"><br></span></div><span style="white-space:pre-wrap">Best regards,<br></span></div><span style="white-space:pre-wrap">Ronie<br></span></div><div class="gmail_extra"><br><div class="gmail_quote">2017-02-26 4:42 GMT-03:00 Ben Coman <span dir="ltr"><<a href="mailto:btc@openinworld.com" target="_blank">btc@openinworld.com</a>></span>:<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"><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_-8828781596077640440m_5115983739921926270gmail-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" target="_blank">https://www.diffchecker.com/qF<wbr>8tWcsT</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_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail_signature"><div dir="ltr"><div><br></div><div><div>genLowcodeAlloca32</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">        </span><option: #LowcodeVM><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>"Lowcode instruction generator"</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">       </span>| size |</div><div><br></div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-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_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">                </span>[self ssAllocateRequiredReg:</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">                    </span>(size := optStatus isReceiverResultRegLive</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">                              </span>ifTrue: [Arg0Reg]</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">                               </span>ifFalse: [ReceiverResultReg])].</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>size = ReceiverResultReg ifTrue:</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">                </span>[ optStatus isReceiverResultRegLive: false ].</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>self ssNativeTop nativePopToReg: size.</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>self ssNativePop: 1.</div><div><br></div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>self MoveAw: coInterpreter nativeStackPointerAddress R: TempReg.</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">        </span>self SubR: size R: TempReg.</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>self AndCq: -16 R: TempReg.</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>self MoveR: TempReg R: size.</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">    </span>self MoveR: size Aw: coInterpreter nativeStackPointerAddress.</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>self ssPushNativeRegister: size.</div><div><br></div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-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_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">      </span><option: #LowcodeVM><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>"Lowcode instruction generator"</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">       </span>| size |</div><div><br></div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-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_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap"> </span>self ssNativeTop nativePopToReg: size.</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">  </span>self ssNativePop: 1.</div><div><br></div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>self MoveAw: coInterpreter nativeStackPointerAddress R: TempReg.</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">        </span>self SubR: size R: TempReg.</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>self AndCq: -16 R: TempReg.</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">     </span>self MoveR: TempReg R: size.</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">    </span>self MoveR: size Aw: coInterpreter nativeStackPointerAddress.</div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-m_-4008787636863379655m_3636718100182687936gmail-Apple-tab-span" style="white-space:pre-wrap">   </span>self ssPushNativeRegister: size.</div><div><br></div><div><span class="gmail-m_-8828781596077640440m_5115983739921926270gmail-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_-8828781596077640440m_5115983739921926270gmail-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>
<br></blockquote></div><br></div>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>