Search
Sunday, 22nd of October 2017, 14:25:13 UTC
14:28:19
stassats
scymtym: yeah, i have a fix waiting
14:28:51
stassats
some editing problems yesterday, was supposed to go in together with the change
14:29:28
stassats
in other test news, nlx-causes-alien-stack-leak started failing on -c-stack-is-control-stack
14:29:49
stassats
yet the code fails on even older versions
14:29:52
stassats
so somehow it was masked
14:30:42
stassats
;; No need for unwind protect here, since allocation involves modifying NSP, and NSP is saved and restored during NLX. And in non-transformed case it performs finalization.
14:30:55
stassats
that's not really the case...
14:32:29
specbot
https://bugs.launchpad.net/bugs/645121
14:34:41
stassats
that's an incorrect assumption, if i THROW from within with-alien, the CATCH will indeed restore NSP, but not a return-from
14:38:04
stassats
an unwind-protect slows down the code quite a bit
14:40:34
stassats
but this is basically akin to UNBIND, no full blown UWP needed, because of the stated reasons
14:41:05
stassats
it'll get cleaned up on unwinds, just need to reset NSP on non-local exits
14:41:25
stassats
i just need to introduce a new cleanup form kind, save NSP and clean it up
14:44:31
stassats
if done right, even the non NLX case will get faster, since multiple NSP restores can be rolled into one
16:59:44
stassats
nsp-protect is proving to be difficult
16:59:57
stassats
can't easily pass the saved lvar through all the ir stages
17:57:09
stassats
after adjusting ir1-convert-combination-args to use lvar, i think i got it
20:20:51
stassats
huh, the same clean up may be emitted twice
20:21:13
stassats
that breaks my solution, sigh
20:25:13
stassats
(defun x (a) (let (*) (if a 10 20))) unbinds twice
20:26:23
stassats
not running twice, but two sequences doing the same thing
21:28:41
stassats
saved by the code freeze
21:48:48
stassats
rethinking the whole approach, instead of trying to make a really specific nsp-protect, maybe i can have simple-unwind-protect, which acts like special bindings, without establishing catch or unwind blocks, just executing code on RETURN-FROM
21:48:55
stassats
might be useful for something else
22:31:03
stassats
if i could figure out how to do that...
Monday, 23rd of October 2017, 2:25:13 UTC