Hi Tim, Hi Yoshiki,
we made some changes to register allocation in recent weeks and we've broken register saving from machine-code to run-time callouts on ARM. It shows up in the simulator and I'm looking at it now. I suspect VMMaker.oscog-eem.1756. Anyway, apologies, and I'm trying to fix it now. The symptom is that the first assert in the following fails when generating the run-time trampoline calls at start-up:
CogARMCompiler>>genSaveRegs: regMask
"Save the registers in regMask for a call into the C run-time from a trampoline.
Save none, because the ARM ABI only defines callee saved registers, no caller-saved regs.
But for the future..."
self assert: regMask = 0.
self deny: (regMask anyMask: (cogit registerMaskFor: SP and: FPReg and: LR and: PC)).
R12 to: R0 by: -1 do:
[:reg|
(regMask anyMask: (cogit registerMaskFor: reg)) ifTrue:
[cogit PushR: reg]].
^0
I should have it fixed quickly.