<div dir="ltr">Hi Nicolas,<div><br></div><div>    I integrated David&#39;s integration of your changes from the most up-to-date VMMaker.  If you&#39;d like to send me what you think should be there I&#39;ll compare, run the tests, and choose.  I had to change what was in VMMaker a little to fix simulation, and I think the replacement of all those &quot;self cCode: &#39;magnitude &gt;&gt; 32&#39;&quot; occurrences with &quot;magnitude &gt;&gt; 32&quot;, since I fixed Slang&#39;s right-shift generation, is a marked improvement.  So I suppose I&#39;m saying that I&#39;ll review your code and if it works integrate it, but it&#39;ll probably get tweaked so that simulation works, symbols are used for c types, etc.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Dec 20, 2012 at 3:26 PM, Nicolas Cellier <span dir="ltr">&lt;<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
2012/12/20  &lt;<a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a>&gt;:<br>
<div class="im">&gt;<br>
&gt; Eliot Miranda uploaded a new version of VMMaker to project VM Maker:<br>
&gt; <a href="http://source.squeak.org/VMMaker/VMMaker.oscog-eem.240.mcz" target="_blank">http://source.squeak.org/VMMaker/VMMaker.oscog-eem.240.mcz</a><br>
&gt;<br>
&gt; ==================== Summary ====================<br>
&gt;<br>
&gt; Name: VMMaker.oscog-eem.240<br>
&gt; Author: eem<br>
&gt; Time: 20 December 2012, 12:21:03.98 pm<br>
&gt; UUID: f72e2cd1-8b0e-45af-acd7-06ba9bbc2a50<br>
&gt; Ancestors: VMMaker.oscog-eem.239<br>
&gt;<br>
<br>
&gt;<br>
</div><div class="im">&gt; Remove obsolete use of cCode: &#39;magnitude &gt;&gt; 32&#39; in the integer<br>
&gt; conversion routines signed64BitIntegerFor: et al now that Slang<br>
&gt; generates the correct cases for right-shift.<br>
&gt;<br>
<br>
</div>Hi Eliot, did you see code at <a href="http://code.google.com/p/cog/issues/detail?id=92" target="_blank">http://code.google.com/p/cog/issues/detail?id=92</a> ?<br>
My version of signed64BitIntegerFor: is much simpler<br>
<br>
1) define magnitude as unsigned<br>
        &lt;var: &#39;magnitude&#39; type: &#39;usqLong&#39;&gt;,<br>
<br>
2) handle SmallInteger positive and negative value during the sign test<br>
        integerValue &lt; 0<br>
                ifTrue:[        integerValue &gt;= 16r-40000000 ifTrue: [^self<br>
integerObjectOf: integerValue].<br>
<div class="im">                                largeClass := self classLargeNegativeInteger.<br>
                                magnitude := 0 - integerValue]<br>
</div>                ifFalse:[       integerValue &lt;= 16r3FFFFFFF ifTrue: [^self<br>
integerObjectOf: integerValue].<br>
<div class="im">                                largeClass := self classLargePositiveInteger.<br>
                                magnitude := integerValue].<br>
<br>
</div>I think the 3rd change maybe is not worth, it replaces<br>
<div class="im">                        (highWord := highWord &gt;&gt; 8) = 0 ifFalse:[sz := sz + 1].<br>
                        (highWord := highWord &gt;&gt; 8) = 0 ifFalse:[sz := sz + 1].<br>
                        (highWord := highWord &gt;&gt; 8) = 0 ifFalse:[sz := sz + 1]].<br>
</div>with:<br>
                        (highWord &gt;&gt; 16) = 0 ifFalse:<br>
                                [highWord := highWord &gt;&gt; 16.<br>
                                sz := sz + 2].<br>
                        (highWord &gt;&gt; 8) = 0 ifFalse:[sz := sz + 1].<br>
<span class="HOEnZb"><font color="#888888"><br>
Nicolas<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div>