Date: Thu, 3 Nov 2016 07:58:49 -0700 From: Matt Birkholz <m...@birchwood-abbey.net> > From: Taylor R Campbell <campb...@mumble.net> > Date: Thu, 3 Nov 2016 00:16:21 +0000 > > Why are you deleting expansions in SF that are already deleted from > the source code? I delete SF expansions in the host. Deleting them from the source code only removes them from the cross-compiler. I delete them in the host so that it will generate a cross compiler compatible with the new runtime (in which VALUES is a procedure). So I see. See follow-up, message-id <20161103004239.1598a60...@jupiter.mumble.net>. > One possibility is that the integrations you removed for > > (receive (x y z) (values a b c) > ...) > > caused some hot spot to go from moving variables around on the stack > to allocating objects in the heap. The old implementation of values creates a closure, on the heap. What variables move around on the stack? I didn't think LIAR knew anything about whacky continuations. Even if it did, it wouldn't know the arity of the current continuation until runtime, so it couldn't be generating code to magic the stack.
LIAR didn't, but SF did. It would transform (receive (x y z) (values a b c) ...) into (let ((x a) (y b) (z c)) ...) and thereby avoid the closure altogether. That's what the integration you're deleting did. _______________________________________________ MIT-Scheme-devel mailing list MIT-Scheme-devel@gnu.org https://lists.gnu.org/mailman/listinfo/mit-scheme-devel