Search
22:22:12
stassats
huh, local calls that access values from the parent frame are completely weird
22:22:32
stassats
RBP is passed once for each closed over value
22:22:49
stassats
(defun bar () (let ((a 0) (b 0)) (labels ((z () (incf a) (incf b))) (declare (notinline z)) (z) 10)))
22:23:16
stassats
three times in total here, once for call sequence, and two times for a&b
22:24:24
stassats
and return-from parent-function from a local function involves unwind-protect
22:24:54
stassats
so, i know what i'll be figuring out the next release cycle
22:28:53
stassats
and there's actually enough registers for the closed over values to not be on the stack
22:29:00
stassats
but that's going to be difficult
22:38:32
stassats
multiple CFP passes seems to be easy to deal with
22:39:58
stassats
not using UNWIND is probably a bit more difficult, and using registers for closures quite more difficult