Fix bug: scheme_to_interface must clear the floating-point register
stack. Otherwise, inexplicable floating-point errors can occur. An
example of such an error can be created by typing `-1e-194' at a
freshly-booted scheme.
The actual problem is somewhat involved. The C compiler assumes that
all of the floating-point registers are empty on the entry to any
procedure. As a consequence of this assumption, it feels free to use
all 8 of the registers. However, if this assumption is violated, a C
procedure that uses too many registers will signal a floating-point
stack overflow.
However, the Scheme compiler does not follow this convention; more
precisely, since it was originally designed to use reasonable
floating-point hardware, in which the floating-point registers are
organized as a bank of registers rather than a stack, it doesn't do
anything about popping registers when it is done with them. As a
consequence, floating-point operations generated by the Scheme
compiler often leave values on the floating-point stack.
To work around this without redesigning the compiler, the
compiled-code interface clears out the stack whenever it transfers
between C and Scheme code. The bug fixed by this revision was a
transfer point that did not have code to clear out the stack.