<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>Hi Nicolas,</div><div id="AppleMailSignature"><br></div><div id="AppleMailSignature">&nbsp; &nbsp; on a point of terminology...</div><div><br>On Apr 28, 2016, at 12:39 PM, Nicolas Cellier &lt;<a href="mailto:nicolas.cellier.aka.nice@gmail.com">nicolas.cellier.aka.nice@gmail.com</a>&gt; wrote:<br><br></div><blockquote type="cite"><div><span></span></div></blockquote><blockquote type="cite"><div><div dir="ltr"><div><div>Moreover, as long as you write primitive: 110 in cog, you don't invoke primitive 110.<br></div>You rather invoke genPrimitiveIdentical.<br></div><div>Please try the snippet on a StackVM.<br></div></div></div></blockquote><div><br></div>Yes, one /does/ invoke primitive 110; that's what the primitive pragma specifies. &nbsp;But the VM doesn't necessarily invoke the primitiveIdentical implementation of primitive 110 in the interpreter and will very likely invoke code generated by <span style="background-color: rgba(255, 255, 255, 0);">genPrimitiveIdentical.</span><div><br><blockquote type="cite"><div><div dir="ltr"><div><br></div><div>genPrimitiveIdentical has been slightly refactored, but I see no obvious problem by just reading code.<br></div><div>Moreover, when you use Object = you'll also call same methods in the end...<br></div><div>This would deserve experimenting VMSimulator... (I don't have the Bochs plugin working now)<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-04-28 21:21 GMT+02:00 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>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Juan, then how do you explain:<span class=""><br><br>"Just to clarify: the issue was experienced only when running on Cog...<br>
current versions of the Stack VM performed as expected."<br><br></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">2016-04-28 21:10 GMT+02:00 Juan Vuletich <span dir="ltr">&lt;<a href="mailto:JuanVuletich@zoho.com" target="_blank">JuanVuletich@zoho.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
On 4/28/2016 2:13 PM, Phil (list) wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
On Thu, 2016-04-28 at 12:58 -0400, Phil (list) wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Thu, 2016-04-28 at 16:43 +0200, ClĂ©ment Bera wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
&nbsp; Have you tried on latest VM ? I remembered fixing a bug on #==<br>
primitive like a month ago. The problem was when performing #==<br>
primitive with the argument being a forwarder to an immediate.<br>
<br>
</blockquote>
The problem still existed as of Cog #3686 (Juan found the fix<br>
yesterday.)&nbsp; On my system, Cuis last worked perfectly with 3370,<br>
mostly<br>
worked with 3390, somewhat worked with 3427 and did not work after<br>
that<br>
until we found the Character&gt;&gt;#= bug/fix.<br>
</blockquote>
Just to clarify: the issue was experienced only when running on Cog...<br>
current versions of the Stack VM performed as expected.<br>
</blockquote>
<br>
Fortunately I work with Gera Richarte @ Satellogic, and it didn't take long for him to suggest an explanation: Maybe prim 110 is broken in recent Cog VMs, but nobody notices it because the only sender is #== that is already optimized by the jitter, so prim 110 is never really called. And I realized we can test that theory. First, we add this method to Character:<br>
<br>
=== aCharacter<br>
&lt;primitive: 110&gt;<br>
&nbsp; &nbsp; self halt<br>
<br>
Then the following snippet (in latest Cuis, #2744):<br>
<br>
&nbsp; &nbsp; 0 to: 255 do: [ :i1 | 0 to: 255 do: [ :i2 | i1 = i2 ifFalse: [(Character value: i1) === (Character value: i2) ifTrue: [{i1.i2} print ]]]]<br>
<br>
prints nothing if run with Cog 3370, but prints a lot of pairs in more recent Cog. So I think Gera is right.<br>
<br>
Thanks,<br>
Juan Vuletich<br>
<br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></blockquote></div></body></html>