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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Chris Muller-3
Is this a fix we should want in the 5.3 release?

On Wed, Dec 11, 2019 at 2:09 PM <[hidden email]> 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]]!



Reply | Threaded
Open this post in threaded view
|

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

Eliot Miranda-2
Hi Chris,

On Dec 11, 2019, at 8:03 PM, Chris Muller <[hidden email]> 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.


On Wed, Dec 11, 2019 at 2:09 PM <[hidden email]> 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]]!




Reply | Threaded
Open this post in threaded view
|

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

Levente Uzonyi
Hi Eliot,

On Thu, 12 Dec 2019, Eliot Miranda wrote:

> Hi Chris,
>       On Dec 11, 2019, at 8:03 PM, Chris Muller <[hidden email]> 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 <[hidden email]> 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]]!
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

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

Levente Uzonyi
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 <[hidden email]>
>> 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 <[hidden email]> 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]]!
>>
>>
>>
>

Reply | Threaded
Open this post in threaded view
|

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

Eliot Miranda-2
Hi 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 <[hidden email]> 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

> On Dec 12, 2019, at 2:45 AM, Levente Uzonyi <[hidden email]> wrote:
>
> And the point is that the bug causes issues on x86.

Thanks!  Will fix asap and communicate with the board if this implies we need a different release candidate VM.

>> Levente
>>
>>>
>>>>      On Wed, Dec 11, 2019 at 2:09 PM <[hidden email]> 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]]!
>

Reply | Threaded
Open this post in threaded view
|

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

Levente Uzonyi
Hi Eliot,

On Thu, 12 Dec 2019, Eliot Miranda wrote:

> Hi 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 <[hidden email]> 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
>
>> On Dec 12, 2019, at 2:45 AM, Levente Uzonyi <[hidden email]> wrote:
>>
>> And the point is that the bug causes issues on x86.
>
> Thanks!  Will fix asap and communicate with the board if this implies we need a different release candidate VM.
I just built a new 64-bit VM with gcc 8.3, and the floating point issue
with #basicAt: seems fixed. I ran some tests in the image, and they all
passed.

Levente

P.S.: there is a configuration issue with the new sndio sound plugin. The
build script tries to build it on linux and fails.

>
>>> Levente
>>>
>>>>
>>>>>      On Wed, Dec 11, 2019 at 2:09 PM <[hidden email]> 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]]!
>>

Reply | Threaded
Open this post in threaded view
|

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

Eliot Miranda-2
Hi Board,

> On Dec 12, 2019, at 4:30 PM, Levente Uzonyi <[hidden email]> wrote:
>
> Hi Eliot,
>
>> On Thu, 12 Dec 2019, Eliot Miranda wrote:
>>
>> Hi 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 <[hidden email]> 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
>>
>>>> On Dec 12, 2019, at 2:45 AM, Levente Uzonyi <[hidden email]> wrote:
>>> And the point is that the bug causes issues on x86.
>>
>> Thanks!  Will fix asap and communicate with the board if this implies we need a different release candidate VM.
>
> I just built a new 64-bit VM with gcc 8.3, and the floating point issue with #basicAt: seems fixed. I ran some tests in the image, and they all passed.

So we do need to change the release candidate VM to the current one.  But let’s wait until the Linux build sndio configuration issue isn’t resolved before we make what is hopefully the final choice.

>
> Levente
>
> P.S.: there is a configuration issue with the new sndio sound plugin. The build script tries to build it on linux and fails.
>
>>
>>>> Levente
>>>>>
>>>>>>     On Wed, Dec 11, 2019 at 2:09 PM <[hidden email]> 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]]!
>