[Vm-dev] Cuis now runs with latest Cog, but I don't understand the problem we had

Juan Vuletich JuanVuletich at zoho.com
Thu Apr 28 19:10:52 UTC 2016


On 4/28/2016 2:13 PM, Phil (list) wrote:
>
> On Thu, 2016-04-28 at 12:58 -0400, Phil (list) wrote:
>> On Thu, 2016-04-28 at 16:43 +0200, Clément Bera wrote:
>>>   
>>> Have you tried on latest VM ? I remembered fixing a bug on #==
>>> primitive like a month ago. The problem was when performing #==
>>> primitive with the argument being a forwarder to an immediate.
>>>
>> The problem still existed as of Cog #3686 (Juan found the fix
>> yesterday.)  On my system, Cuis last worked perfectly with 3370,
>> mostly
>> worked with 3390, somewhat worked with 3427 and did not work after
>> that
>> until we found the Character>>#= bug/fix.
> Just to clarify: the issue was experienced only when running on Cog...
> current versions of the Stack VM performed as expected.

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:

=== aCharacter
<primitive: 110>
     self halt

Then the following snippet (in latest Cuis, #2744):

     0 to: 255 do: [ :i1 | 0 to: 255 do: [ :i2 | i1 = i2 ifFalse: 
[(Character value: i1) === (Character value: i2) ifTrue: [{i1.i2} print ]]]]

prints nothing if run with Cog 3370, but prints a lot of pairs in more 
recent Cog. So I think Gera is right.

Thanks,
Juan Vuletich



More information about the Vm-dev mailing list