[squeak-dev] [Vm-dev] VM Maker: VMMaker.oscog-eem.2606.mcz

Levente Uzonyi leves at caesar.elte.hu
Thu Dec 12 10:43:35 UTC 2019


And the point is that the bug causes issues on x86.

Levente

On Thu, 12 Dec 2019, Levente Uzonyi wrote:

> Hi Eliot,
>
> On Thu, 12 Dec 2019, Eliot Miranda wrote:
>
>> Hi Chris,
>>       On Dec 11, 2019, at 8:03 PM, Chris Muller <asqueaker at gmail.com> 
>> wrote:
>>
>>       Is this a fix we should want in the 5.3 release?
>> 
>> 
>> I do t think it affects the release.  This only affects builds that use a 
>> particular version of gcc on ARM64. As far as we’re aware, it doesn’t 
>> affect x86-64 builds.  But if anyone sees the issue in a current build they
>> should say so asap.
>
> This seems to be the same bug described in this thread: 
> http://forum.world.st/Primitive-40-asFloat-fails-for-me-tp5095689p5095908.html
>
> Levente
>
>>
>>       On Wed, Dec 11, 2019 at 2:09 PM <commits at source.squeak.org> wrote:
>>        
>>       Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
>>       http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2606.mcz
>>
>>       ==================== Summary ====================
>>
>>       Name: VMMaker.oscog-eem.2606
>>       Author: eem
>>       Time: 11 December 2019, 12:08:45.007873 pm
>>       UUID: be1eac72-340a-4ed5-bfe7-6051597847a4
>>       Ancestors: VMMaker.oscog-eem.2605
>>
>>       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.
>>
>>       =============== Diff against VMMaker.oscog-eem.2605 ===============
>>
>>       Item was changed:
>>         ----- Method: Spur64BitMemoryManager>>fetchLong32:ofFloatObject: 
>> (in category 'object access') -----
>>         fetchLong32: fieldIndex ofFloatObject: oop
>>               "index by word size, and return a pointer as long as the word 
>> size"
>>
>>               | bits |
>>               (self isImmediateFloat: oop) ifFalse:
>>                       [^self fetchLong32: fieldIndex ofObject: oop].
>>               bits := self smallFloatBitsOf: oop.
>>       +       ^fieldIndex = 0
>>       +               ifTrue: [bits bitAnd: 16rFFFFFFFF]
>>       +               ifFalse: [bits >> 32]!
>>       -       ^self
>>       -               cCode: [(self cCoerceSimple: (self addressOf: bits) 
>> to: #'int *') at: fieldIndex]
>>       -               inSmalltalk:
>>       -                       [self flag: #endian.
>>       -                        fieldIndex = 0
>>       -                               ifTrue: [bits bitAnd: 16rFFFFFFFF]
>>       -                               ifFalse: [bits >> 32]]!
>> 
>> 
>> 
>


More information about the Squeak-dev mailing list