<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
                                        Hi Nicolas --<div><br></div><div>Would you mind looking at VMMaker.oscog-mt.3180 in VMMakerInbox? </div><div><br></div><div>Do you think this is a good thing to have for the OSVM release? If so, I will fix the long-long tests to document this.</div><div><br></div><div>Best,</div><div>Marcel</div><div class="mb_sig"></div>
                                        <blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 12.04.2022 10:55:33 schrieb Marcel Taeumel <marcel.taeumel@hpi.de>:</p><div style="font-family:Arial,Helvetica,sans-serif"><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">
                                        Hi Nicolas --<div><br></div><div>Thanks for the tip. I will have a look.</div><div><br></div><div>Do you know whether Squeak FFI 32-bit does (or should) support "long long" (or "int64_t") for Large(Positive|Negative)Integer outside the range of int32_t?</div><div><br></div><div>On 32-bit Squeak, we need both SmallInteger and <span style="font-size: 10pt">Large(Positive|Negative)Integer to cover int32_t. Not so on 64-bit Squeak. So, I am not sure whether there is actually support for int64_t on 32-bit Squeak in this regard...</span></div><div><span style="font-size: 10pt"><br></span></div><div><span style="font-size: 10pt">So, am I looking for a bug or would this rather be a new feature? :-)</span></div><div><span style="font-size: 10pt"><br></span></div><div><span style="font-size: 10pt">Best,</span></div><div><span style="font-size: 10pt">Marcel</span></div><div class="mb_sig"></div>
                                        <blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 11.04.2022 21:31:58 schrieb Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com>:</p><div style="font-family:Arial,Helvetica,sans-serif"> Hi Marcel,
<br>Sounds like 32bits -1 missing a sign extension when converted to 64bits...
<br>At least, the result is correctly 64bits for sure.
<br>
<br>Le lun. 11 avr. 2022 à 18:42, Marcel Taeumel <marcel.taeumel@hpi.de> a
<br>écrit :
<br>
<br>>
<br>> Hi all --
<br>>
<br>> This is not working in 32-bit on Windows:
<br>>
<br>> FFITestLibrary ffiTest8LongLongSum: -1 with: -1 with: -1 with: -1 with: -1
<br>> with: -1 with: -1 with: -1.
<br>>
<br>> It answers " 34359738360 " instead of " - 8 ". It's working fine in a
<br>> 64-bit build. The debugging output in this test functions says:
<br>>
<br>> 8 long longs came in as
<br>> i1 = 4294967295 (ffffffff)
<br>> i2 = 4294967295 (ffffffff)
<br>> i3 = 4294967295 (ffffffff)
<br>> i4 = 4294967295 (ffffffff)
<br>> i5 = 4294967295 (ffffffff)
<br>> i6 = 4294967295 (ffffffff)
<br>> i7 = 4294967295 (ffffffff)
<br>> i8 = 4294967295 (ffffffff)
<br>>
<br>> ... this is clearly wrong. Or is it? On 64-bit, the same function says:
<br>>
<br>> 8 long longs came in as
<br>> i1 = -1 (ffffffffffffffff)
<br>> i2 = -1 (ffffffffffffffff)
<br>> i3 = -1 (ffffffffffffffff)
<br>> i4 = -1 (ffffffffffffffff)
<br>> i5 = -1 (ffffffffffffffff)
<br>> i6 = -1 (ffffffffffffffff)
<br>> i7 = -1 (ffffffffffffffff)
<br>> i8 = -1 (ffffffffffffffff)
<br>>
<br>> Both are formatted via " %lld (%llx) " I am missing something here... did
<br>> we change the representation of negative integers in Squeak and forgot to
<br>> update something along ThreadedFFIPlugin >> #ffiIntegerValueOf:? :-/
<br>>
<br>> Best,
<br>> Marcel
<br>>
<br>> ***
<br>>
<br>> EXPORT(long long) ffiTest8LongLongSum(long long c1, long long c2, long
<br>> long c3, long long c4, long long c5, long long c6, long long c7, long long
<br>> c8)
<br>> {
<br>> printf("8 long longs came in as\ni1 = %lld (%llx)\ni2 = %lld (%llx)\ni3 =
<br>> %lld (%llx)\ni4 = %lld (%llx)\ni5 = %lld (%llx)\ni6 = %lld (%llx)\ni7 =
<br>> %lld (%llx)\ni8 = %lld (%llx)\n", c1, c1, c2, c2, c3, c3, c4, c4, c5, c5,
<br>> c6, c6, c7, c7, c8, c8);
<br>> return c1 + c2 + c3 + c4 + c5 + c6 + c7 + c8;
<br>> }
<br>>
<br><div dir="auto">Hi Marcel,<div dir="auto">Sounds like 32bits -1 missing a sign extension when converted to 64bits...</div><div dir="auto">At least, the result is correctly 64bits for sure.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 11 avr. 2022 à 18:42, Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de" rel="noreferrer noreferrer" target="_blank">marcel.taeumel@hpi.de</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin: 0 0 0 .8ex;border-left: 1px #ccc solid;padding-left: 1ex;min-width: 500px"> <div id="m_1045273152890182240m_5944435337651575203m_-5630769014190549904__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000;text-align: left" dir="ltr">Hi all --<div></div><div><br></div><div>This is not working in 32-bit on Windows:</div><div><br></div><div><span style="font-size: 13.3333px">FFITestLibrary ffiTest8LongLongSum: -1 with: -1 with: -1 with: -1 with: -1 with: -1 with: -1 with: -1.</span><br></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">It answers " 34359738360 " instead of " - 8 ". It's working fine in a 64-bit build. The debugging output in this test functions says:</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><div><span style="font-size: 13.3333px">8 long longs came in as</span></div><div><span style="font-size: 13.3333px">i1 = 4294967295 (ffffffff)</span></div><div><span style="font-size: 13.3333px">i2 = 4294967295 (ffffffff)</span></div><div><span style="font-size: 13.3333px">i3 = 4294967295 (ffffffff)</span></div><div><span style="font-size: 13.3333px">i4 = 4294967295 (ffffffff)</span></div><div><span style="font-size: 13.3333px">i5 = 4294967295 (ffffffff)</span></div><div><span style="font-size: 13.3333px">i6 = 4294967295 (ffffffff)</span></div><div><span style="font-size: 13.3333px">i7 = 4294967295 (ffffffff)</span></div><div><span style="font-size: 13.3333px">i8 = 4294967295 (ffffffff)</span></div></div><div><span style="font-size: 13.3333px"><br></span></div><div><span style="font-size: 13.3333px">... this is clearly wrong. Or is it? On 64-bit, the same function says:</span></div><div><span style="font-size: 13.3333px"><br></span></div><div><div style="font-size: 13.3333px">8 long longs came in as</div><div style="font-size: 13.3333px">i1 = -1 (ffffffffffffffff)</div><div style="font-size: 13.3333px">i2 = -1 (ffffffffffffffff)</div><div style="font-size: 13.3333px">i3 = -1 (ffffffffffffffff)</div><div style="font-size: 13.3333px">i4 = -1 (ffffffffffffffff)</div><div style="font-size: 13.3333px">i5 = -1 (ffffffffffffffff)</div><div style="font-size: 13.3333px">i6 = -1 (ffffffffffffffff)</div><div style="font-size: 13.3333px">i7 = -1 (ffffffffffffffff)</div><div style="font-size: 13.3333px">i8 = -1 (ffffffffffffffff)</div><div style="font-size: 13.3333px"><br></div><div style="font-size: 13.3333px">Both are formatted via " %lld (%llx) " I am missing something here... did we change the representation of negative integers in Squeak and forgot to update something along ThreadedFFIPlugin >> #ffiIntegerValueOf:? :-/</div><div style="font-size: 13.3333px"><br></div><div style="font-size: 13.3333px">Best,<br>Marcel</div><div style="font-size: 13.3333px"><br></div><div style="font-size: 13.3333px">***</div><div style="font-size: 13.3333px"><br></div><div><div><span style="font-size: 13.3333px">EXPORT(long long) ffiTest8LongLongSum(long long c1, long long c2, long long c3, long long c4, long long c5, long long c6, long long c7, long long c8)</span></div><div><span style="font-size: 13.3333px">{</span></div><div><span style="font-size: 13.3333px"><span style="white-space:pre-wrap">        </span>printf("8 long longs came in as\ni1 = %lld (%llx)\ni2 = %lld (%llx)\ni3 = %lld (%llx)\ni4 = %lld (%llx)\ni5 = %lld (%llx)\ni6 = %lld (%llx)\ni7 = %lld (%llx)\ni8 = %lld (%llx)\n", c1, c1, c2, c2, c3, c3, c4, c4, c5, c5, c6, c6, c7, c7, c8, c8);</span></div><div><span style="font-size: 13.3333px"><span style="white-space:pre-wrap">   </span>return c1 + c2 + c3 + c4 + c5 + c6 + c7 + c8;</span></div><div><span style="font-size: 13.3333px">}</span></div></div></div></div></blockquote></div>
<br></marcel.taeumel@hpi.de></div></blockquote></div></div></blockquote></div>