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

commits at source.squeak.org commits at source.squeak.org
Wed Dec 11 20:09:01 UTC 2019

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

More information about the Vm-dev mailing list