Thanks for pointing out that old paper, Marc.
There's a short paragraph in it that talks about what could be improved:
Keeping flonums unboxed as long as possible is important for iterative algorithms. Gambit-C currently boxes flonums across all jumps; this can be a performance issue (e.g., the code for Gauss-Seidel preconditioning is not competitive with C). Gambit-C uses an on-the-fly register allocation algorithm that behaves poorly for heavily nested, lambda- lifted, iterations. While many small routines that return Points (two-vectors) are inlined by Gambit-C, a structure analysis that eliminates the allocation of temporary vectors that are not referenced outside a function would improve performance somewhat.
Plus ça change, and all that.
Brad