Godmar Back wrote: | It appears to me, however, that we should fix the jit to follow the | standard C calling conventions on a given architecture and/or OS/assembler | combo, unless there's compelling reason not to do so. Well, that means there will be OS-dependent stuff in the JIT code generator itself. Do any other architectures have this problem? It really boils down to: where do you want the complexity and non-portability? | Actually, thinking about it, maybe I see your problem: the compiler | might only save them if it is actually going to clobber them. It | may not realize that a register is clobbered by the function invoked | from callMethodX, but not in callMethodX itself. Is that what's happening? This is correct. GCC (as well as every other decent compiler out there) saves only those registers that it clobbers. Yes, you can use the "clobber" directive, but I'd rather minimize the GCC dependencies.