VM Maker: VMMaker.oscog-eem.2614.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.2614.mcz

commits-2
 
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!