Is this a fix we should want in the 5.3 release?
On Wed, Dec 11, 2019 at 2:09 PM commits@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]]!
Hi Chris,
On Dec 11, 2019, at 8:03 PM, Chris Muller asqueaker@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.
On Wed, Dec 11, 2019 at 2:09 PM commits@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]]!
Hi Eliot,
On Thu, 12 Dec 2019, Eliot Miranda wrote:
Hi Chris, On Dec 11, 2019, at 8:03 PM, Chris Muller asqueaker@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.ht...
Levente
On Wed, Dec 11, 2019 at 2:09 PM <commits@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]]!
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@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.ht...
Levente
On Wed, Dec 11, 2019 at 2:09 PM <commits@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]]!
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 <asqueaker@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.ht...
On Dec 12, 2019, at 2:45 AM, Levente Uzonyi leves@caesar.elte.hu 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 <commits@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]]!
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 <asqueaker@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.ht...
On Dec 12, 2019, at 2:45 AM, Levente Uzonyi leves@caesar.elte.hu 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 <commits@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]]!
Hi Board,
On Dec 12, 2019, at 4:30 PM, Levente Uzonyi leves@caesar.elte.hu 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 <asqueaker@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.ht...
On Dec 12, 2019, at 2:45 AM, Levente Uzonyi leves@caesar.elte.hu 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 <commits@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]]!
squeak-dev@lists.squeakfoundation.org