[squeak-dev] Re: x86 linux VM FFI FPU stack overflow
ncellier at ifrance.com
Thu Jan 15 18:41:36 UTC 2009
Nicolas Cellier a écrit :
> Eliot Miranda <eliot.miranda <at> gmail.com> writes:
>> So.... the FFI marshalling machinery really needs to reset the FPU's stack
> pointer to zero both before and after making a call. I don't know if the FFI
> does this but chances are it doesn't.
>> In my time VisualWorks suffered problems like this, including its machine code
> floating point primitives not zeroing the x87 stack pointer on primitive fail.
> Now it does an fninit (the relevant instruction to intialize the x87 FPU) in
> relevant places.
> As suggested by my above tests, the fninit does not seem to be called in FFI.
> Would you know how to force such an instruction in a portable way via VMMaker?
Ian just mailed that all parameters are passed in memory, so the right
place for fninit is before foreign call, and before ffi return.
However, I see this does reset the whole FPU state.
Bad if in the future we want to control hardware trap on FPU...
More information about the Squeak-dev