From: David P G. <gr...@us...> - 2001-12-14 18:21:24
|
Hi, Could someone explain how sysCallSigWait is supposed to be dealing with nonvolatile registers? As I understand it, the point of sysCallSigWait is to allow a sysCall transition into C while enabling a GC to be taken while the thread that did the sysCallSigWait is in C. On both PPC and IA32, it appears that the sysCallSigWait implementation is not saving the nonvolatile registers in the VM_Registers object. Therefore, I don't see how it is possible to actually correctly take a GC from this point. The nonvolatile registers may in fact contain references, and they have been passed off into C-land in the hardware registers and potentially saved at some arbitrary point in the C portion of the stack frame. The only way this might possibly work is if every frame on the stack above the call to sysCallSigWait is a baseline compiled frame, and even this seems pretty fragile. --dave |