[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:43:33 UTC 2016


Hi Nicolas,

On 4/28/2016 4:21 PM, Nicolas Cellier wrote:
>
> Hi Juan, then how do you explain:
>
> "Just to clarify: the issue was experienced only when running on Cog...
> current versions of the Stack VM performed as expected."
>

More precisely, we never experienced such problems with InterpreterVMs 
built from VMMaker (for example 
http://www.squeakvm.org/win32/release/Squeak4.10.2-2612.win32-i386.zip 
), and we experienced them with Cog newer than #3370, built from 
VMMaker-oscog, from Eliot's site. I guess code for prim 110 has diverged 
between both branches.

Thanks,
Juan Vuletich

>
> 2016-04-28 21:10 GMT+02:00 Juan Vuletich <JuanVuletich at zoho.com 
> <mailto:JuanVuletich at zoho.com>>:
>
>
>     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
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20160428/8e3409a2/attachment.htm


More information about the Vm-dev mailing list