VM Maker: VMMaker.oscog-eem.2606.mcz

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

VM Maker: VMMaker.oscog-eem.2606.mcz

Eliot Miranda uploaded a new version of VMMaker to project VM Maker:

==================== 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]]!