[Vm-dev] VM Maker: VMMaker.oscog-eem.1221.mcz
commits at source.squeak.org
commits at source.squeak.org
Sun Apr 19 19:34:49 UTC 2015
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1221.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1221
Author: eem
Time: 19 April 2015, 12:32:58.489 pm
UUID: 8fd9dd12-6a9b-441f-8a1d-deb53c09117e
Ancestors: VMMaker.oscog-eem.1220
Correct CogARMCompiler>>literalBeforeFollowingAddress:
so it also deals with PushCw instructions.
=============== Diff against VMMaker.oscog-eem.1220 ===============
Item was added:
+ ----- Method: CogARMCompiler>>instructionIsOR: (in category 'testing') -----
+ instructionIsOR: instr
+ "is this an ORR instruction?"
+ ^(instr >> 21 bitAnd: 16rF) = 16rC!
Item was changed:
----- Method: CogARMCompiler>>literalBeforeFollowingAddress: (in category 'inline cacheing') -----
literalBeforeFollowingAddress: followingAddress
+ "Answer the long constant loaded by a MOV/ORR/ORR/ORR
+ or MOV/ORR/ORR/ORR/PUSH sequence, just before this address:"
+ ^(self instructionIsOR: (objectMemory longAt: followingAddress - 4))
+ ifTrue:
+ [ ((objectMemory byteAt: followingAddress - 16) << 24)
+ + ((objectMemory byteAt: followingAddress - 12) << 16)
+ + ((objectMemory byteAt: followingAddress - 8) << 8)
+ + (objectMemory byteAt: followingAddress - 4)]
+ ifFalse:
+ [ ((objectMemory byteAt: followingAddress - 20) << 24)
+ + ((objectMemory byteAt: followingAddress - 16) << 16)
+ + ((objectMemory byteAt: followingAddress - 12) << 8)
+ + (objectMemory byteAt: followingAddress - 8)]!
- "Answer the long constant loaded by a MOV/ORR/ORR/ORR sequence just before this address:"
- ^ ((objectMemory byteAt: followingAddress - 16) << 24)
- + ((objectMemory byteAt: followingAddress - 12) << 16)
- + ((objectMemory byteAt: followingAddress - 8) << 8)
- + (objectMemory byteAt: followingAddress - 4) !
More information about the Vm-dev
mailing list