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

commits at source.squeak.org commits at source.squeak.org
Sat Dec 14 23:23:04 UTC 2019


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2614.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.2614
Author: eem
Time: 14 December 2019, 3:21:40.412319 pm
UUID: 00486262-d28b-4d13-ae25-b40c68802f04
Ancestors: VMMaker.oscog-eem.2613

Provide DoubleWordArray>>unsignedLongAt:bigEndian:
 for ARMv8 simulation (yes, we're simulating code!).
Nuke CogX64Compiler>>wantsNearAddressFor: now that CFrame/StackPointer are relative to VarBaseReg.

=============== Diff against VMMaker.oscog-eem.2613 ===============

Item was removed:
- ----- Method: CogX64Compiler>>wantsNearAddressFor: (in category 'simulation') -----
- wantsNearAddressFor: anObject
- 	"A hack hook to allow x64 to address CStackPointer and CFramePointer relative to VarBaseReg."
- 	<doNotGenerate>
- 	^anObject == #CFramePointer or: [anObject == #CStackPointer]!

Item was added:
+ ----- Method: DoubleWordArray>>unsignedLongAt:bigEndian: (in category '*VMMaker-JITSimulation') -----
+ unsignedLongAt: byteIndex bigEndian: bigEndian
+ 	"Compatiblity with the ByteArray & Alien methods of the same name."
+ 	| wordIndex lowBits word hiWord |
+ 	wordIndex := byteIndex - 1 // 8 + 1.
+ 	lowBits := byteIndex - 1 bitAnd: 7.
+ 	word := (self at: wordIndex) bitShift: lowBits * -8.
+ 	lowBits > 4 ifTrue: "access straddles two words"
+ 		[hiWord := (self at: wordIndex + 1) bitShift: 8 - lowBits * 8.
+ 		 word := word + hiWord].
+ 	word := word bitAnd: 16rFFFFFFFF.
+ 	bigEndian
+ 		ifTrue:
+ 			[word := ((word bitShift: -24) bitAnd: 16rFF)
+ 					 + ((word bitShift: -8) bitAnd: 16rFF00)
+ 	 				 + ((word bitAnd: 16rFF00) bitShift: 8)
+ 					 + ((word bitAnd: 16rFF) bitShift: 24)]
+ 		ifFalse:
+ 			[].
+ 	^word!



More information about the Vm-dev mailing list