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!