Clozure / ccl

Clozure Common Lisp
http://ccl.clozure.com
Apache License 2.0
840 stars 105 forks source link

%apply-in-frame has bitrotted #497

Open SuperDisk opened 2 weeks ago

SuperDisk commented 2 weeks ago

I'm sure you're aware of this already, but I was just curious what it would take to make this work again:

https://github.com/Clozure/ccl/blob/0c0dcfa122e429bc2d465493f0570a46f983abfc/lib/x86-backtrace.lisp#L399

Right now this message appears when using r to restart a frame in the SLIME debugger.

xrme commented 2 weeks ago

I think what happened here is a side effect of a new, partly working, register allocator being added to the x86-64 backend. This allocator is opt-in-only; it's not used by default. The file Clozure/ccl/doc/compiler-changes-in-CCL-trunk.pdf contains some notes about the allocator.

Prior to that change, it was possible to know where all the frame locals, etc., were.

https://github.com/Clozure/ccl/blob/55ebe5d5bda41b6a3bb0b4e999561f0b9f4f8ec5/lib/x86-backtrace.lisp#L426-L462

I think in order for this to work again, the "new" allocator would have to record debugging information about where to find the frame locals, etc.

I'm not sure, frankly, whether to try to press ahead with this "new" allocator, or to back it out.