<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">Hi, there.<div class="mb_sig"></div><div><br></div><div>I want to understand how data models for 64-bit influence the image side of Squeak FFI.</div><div><span style="font-size: 10pt"><a href="https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models">https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models</a></span><br></div><div><br></div><div>I discovered that there are test functions in the SqueakFFIPrims plugin (sqFFITestFuncs.c) that expect actual "long" types. So, I assume that that is the "long" from C, not Squeak FFI, and thus different on 64-bit Windows vs. 64-bit Unix.</div><div><br></div><div><span style="font-size: 10pt">ffiTest4LongSum</span><br></div><div><span style="font-size: 10pt">ffiTestLongs8</span><span style="font-size: 10pt"><br></span></div><div><span style="font-size: 10pt">ffiTest8longSum</span><span style="font-size: 10pt"><br></span></div><div><span style="font-size: 13.3333px">ffiTestMixedDoublesAndLongs (!!!)</span><span style="font-size: 10pt"><br></span></div><div><br></div><div><span style="font-size: 10pt">Only the last one is actually called from FFI Tests, which could be worse. Because there is not yet a mechanism in place that considers the data model an 64-bit platforms.</span></div><div><span style="font-size: 10pt"><br></span></div><div><span style="font-size: 10pt">So, I think that an atomic type alias for such a C "long" argument could be defined like this:</span></div><div><span style="font-size: 10pt"><br></span></div><div><span style="font-size: 10pt">(wordSize = 4 or: [platformName = 'Win32'])</span></div><div><span style="font-size: 10pt">   ifTrue: ['long' "meaning 'int' in the plugin]</span></div><div><span style="font-size: 10pt">   ifFalse: ['longlong']</span></div><div><span style="font-size: 10pt"><br></span></div><div><span style="font-size: 10pt">Yet, I have no clue on how to name such a type alias. long_t ? native_long_t ? Squeak FFI's 'long' is already taken, and it is always 4 byte.</span></div><div><span style="font-size: 10pt"><br></span></div><div><span style="font-size: 10pt">Would it make sense to also query the data model through a primitive and add that to FFIPlatformDescription? LLP64, LP64, ILP64, SILP64, ... </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>