Is this a fix we should want in the 5.3 release? On Wed, Dec 11, 2019 at 2:09 PM <[hidden email]> wrote:
|
Hi Chris,
On Dec 11, 2019, at 8:03 PM, Chris Muller <[hidden email]> 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]]! > > > > |
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]]! >> >> >> > |
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]]! > |
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. 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]]! >> |
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]]! > |
Free forum by Nabble | Edit this page |