mit-scheme-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MIT-Scheme-devel] R7RS and values.


From: Taylor R Campbell
Subject: Re: [MIT-Scheme-devel] R7RS and values.
Date: Thu, 3 Nov 2016 16:10:34 +0000

   Date: Thu, 3 Nov 2016 07:58:49 -0700
   From: Matt Birkholz <address@hidden>
   
   > From: Taylor R Campbell <address@hidden>
   > 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
<address@hidden>.
   
   > 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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]