Lars Wassermann uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-lw.210.mcz
==================== Summary ====================
Name: VMMaker.oscog-lw.210 Author: lw Time: 17 November 2012, 10:09:25.206 pm UUID: 825aedb9-4486-c84d-bedd-87b09fa9fb62 Ancestors: VMMaker.oscog-lw.209
because of the new call implementation, adapt #isCallPreceedingReturnPC
=============== Diff against VMMaker.oscog-lw.209 ===============
Item was changed: ----- Method: CogARMCompiler>>isCallPreceedingReturnPC: (in category 'testing') ----- isCallPreceedingReturnPC: mcpc "Assuming mcpc is a return pc answer if the instruction before it is a call." + "There are two types of calls: PUSH, BL and (MOV, ORR, ORR, ADD, PUSH, ADD)" + "PUSH {pc} is not sufficient as a test, because pc may be pushed using the PushR opcode" + ^(objectMemory longAt: mcpc - 8) = (self t: 4 o: 9 s: 0 rn: SP rd: 8 shifterOperand: 0) + and: [(objectMemory byteAt: mcpc - 3) >> 4 = 16rB "BL" + or: [ (objectMemory longAt: mcpc - 12) = 16rE1A0E00F "MOV pc, lr" ]]! - "There are two types of calls: BL and (MOV, ORR, ORR, MOV, ADD)" - ^(objectMemory byteAt: mcpc - 3) >> 4 = 16rB - or: [ (objectMemory longAt: mcpc - 8) = 16rE1A0E00F "MOV pc, lr" ] - "MOV pc, lr is sufficient as a test, because call instructions are the only insturctions, during which lr is loaded from pc."!
vm-dev@lists.squeakfoundation.org