<div dir="ltr">Is this a fix we should want in the 5.3 release?</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Dec 11, 2019 at 2:09 PM <<a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> <br>
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:<br>
<a href="http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2606.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2606.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: VMMaker.oscog-eem.2606<br>
Author: eem<br>
Time: 11 December 2019, 12:08:45.007873 pm<br>
UUID: be1eac72-340a-4ed5-bfe7-6051597847a4<br>
Ancestors: VMMaker.oscog-eem.2605<br>
<br>
Fix the "funny floats" issue with gcc et al. Casting the address of an automatic long to an int * is no longer allowed. Thanks to Pablo Tessone for the analysis and fix.<br>
<br>
=============== Diff against VMMaker.oscog-eem.2605 ===============<br>
<br>
Item was changed:<br>
----- Method: Spur64BitMemoryManager>>fetchLong32:ofFloatObject: (in category 'object access') -----<br>
fetchLong32: fieldIndex ofFloatObject: oop<br>
"index by word size, and return a pointer as long as the word size"<br>
<br>
| bits |<br>
(self isImmediateFloat: oop) ifFalse:<br>
[^self fetchLong32: fieldIndex ofObject: oop].<br>
bits := self smallFloatBitsOf: oop.<br>
+ ^fieldIndex = 0<br>
+ ifTrue: [bits bitAnd: 16rFFFFFFFF]<br>
+ ifFalse: [bits >> 32]!<br>
- ^self<br>
- cCode: [(self cCoerceSimple: (self addressOf: bits) to: #'int *') at: fieldIndex]<br>
- inSmalltalk:<br>
- [self flag: #endian.<br>
- fieldIndex = 0<br>
- ifTrue: [bits bitAnd: 16rFFFFFFFF]<br>
- ifFalse: [bits >> 32]]!<br>
<br>
</blockquote></div>