<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi Christian,</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Feb 19, 2019 at 8:05 AM Christian Kellermann <<a href="mailto:ckeen@pestilenz.org">ckeen@pestilenz.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"> * Tobias Pape <<a href="mailto:Das.Linux@gmx.de" target="_blank">Das.Linux@gmx.de</a>> [190219 17:02]:<br>
>  <br>
<br>
> Hi,<br>
> <br>
> > On 19.02.2019, at 12:25, Christian Kellermann <<a href="mailto:ckeen@pestilenz.org" target="_blank">ckeen@pestilenz.org</a>> wrote:<br>
> > <br>
> > Hi,<br>
> > <br>
> > I am currently using the latest VM with commit<br>
> > f9ae4a1479122b448fcfdc80bb2caa09b53aa474<br>
> > <br>
> > On a Squeak image:<br>
> > <br>
> > -----<br>
> > /home/ckeen/Sync/src/Muffin/Squeak5.2-18225-64bit.dependents.image<br>
> > Squeak5.2<br>
> > latest update: #18231<br>
> > Current Change Set: Unnamed1<br>
> > Image format 68021 (64 bit)<br>
> > <br>
> > Virtual Machine<br>
> > ---------------<br>
> > /home/ckeen/src/playground/opensmalltalk-vm/products/sqcogspur64linuxht/lib/squeak/5.0-201902181742/squeak<br>
> > Croquet Closure Cog[Spur] VM [CoInterpreterPrimitives VMMaker.oscog-eem.2509]<br>
> > Unix built on Feb 19 2019 08:58:47 Compiler: 8.2.1 20181127<br>
> > platform sources revision VM: 201902181742 ckeen@blackbeard:src/playground/opensmalltalk-vm Date: Mon Feb 18 09:42:23 2019 CommitHash: f9ae4a147 Plugins: 201902181742 ckeen@blackbeard:src/playground/opensmalltalk-vm<br>
> > CoInterpreter VMMaker.oscog-eem.2509 uuid: 91e81f64-95de-4914-a960-8f842be3a194 Feb 19 2019<br>
> > StackToRegisterMappingCogit VMMaker.oscog-eem.2509 uuid: 91e81f64-95de-4914-a960-8f842be3a194 Feb 19 2019<br>
> <br>
> What Platform [os/cpu] is this  on?<br>
<br>
<br>
Linux/amd64 sorry for omitting this...<br></blockquote><div><br></div><div>and you report that -100 asFloat answers 100.0.</div><div><br></div><div>Can you please try the following experiments?  </div><div><br></div><div>First what is the result of</div><div><br></div><div>    | floats |</div><div>    floats := Array new: 30.</div><div>    1 to: floats size do: [:i| floats at: i put: -100 asFloat].</div><div>    floats</div><div><br></div><div>?</div><div><br></div><div>If the result has the first several floats as 100.0 and the last few as -100.0 then...</div><div><br></div><div>Edit spur64src/vm/gcc3x-cointerp.c so that</div><div><br></div><div>static void</div><div>primitiveAsFloat(void)</div><div>{   DECL_MAYBE_SQ_GLOBAL_STRUCT</div><div>    sqInt rcvr;</div><div>    char *sp;</div><div><br></div><div>    rcvr = longAt(GIV(stackPointer));</div><div>    assert((((rcvr) & 7) == 1));</div><div>    /* begin pop:thenPushFloat: */</div><div>    longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), floatObjectOf(((double) ((rcvr >> 3)) )));</div><div>    GIV(stackPointer) = sp;</div><div>}</div><div><br></div><div>reads</div><div><br></div><div>static void</div><div>primitiveAsFloat(void)</div><div>{   DECL_MAYBE_SQ_GLOBAL_STRUCT</div><div>    sqInt rcvr;</div><div>    char *sp;</div><div><br></div><div>    rcvr = longAt(GIV(stackPointer));</div><div>    assert((((rcvr) & 7) == 1));</div><div>    /* begin pop:thenPushFloat: */</div><div>    longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), floatObjectOf(((double) ((sqInt)(rcvr >> 3)) )));</div><div>    GIV(stackPointer) = sp;</div><div>}</div><div><br></div><div>and test -100 asFloat.  Does this fix it?</div><div><br></div><div>And does this rewrite fix it?</div><div><br></div><div><div>static void</div><div>primitiveAsFloat(void)</div><div>{   DECL_MAYBE_SQ_GLOBAL_STRUCT</div><div>    sqInt rcvr;</div><div>    char *sp;</div><div><br></div><div>    rcvr = longAt(GIV(stackPointer));</div><div>    assert((((rcvr) & 7) == 1));</div><div>    /* begin pop:thenPushFloat: */</div><div>    longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), floatObjectOf(((double) (((sqInt)rcvr >> 3)) )));</div><div>    GIV(stackPointer) = sp;</div><div>}</div></div><div><br></div><div>(I would expect not)</div></div> <br><div dir="ltr" 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></div></div>