From: Nikodemus S. <tsi...@cc...> - 2005-10-25 07:23:07
|
On Mon, 24 Oct 2005, Raymond Toy wrote: > I remember now what is happening, at least on cmucl. The callback > trampoline eventually calls funcall3. This goes through the linkage > table, which kind of assumed it was being called from call_into_c, which > would have saved all the appropriate registers. However, the linkage > table entry unconditionally uses r13 and r24 to do the necessary stuff > to do the linkage. > > Thus, the callback trampoline needs to save just the registers used by > the linkage table; funcall3, via call_into_lisp, should save any other > registers used. Thanks for the explanation. However, this should not be an issue with SBCL, as we don't use the linkage-table for symbols found directly in the runtime (like funcall3). It is probably worth noting this somewhere (or at least introducing a test that would catch this), in case we ever change the way linkage table work. Cheers, -- Nikodemus Schemer: "Buddha is small, clean, and serious." Lispnik: "Buddha is big, has hairy armpits, and laughs." |