Hello,

On Tue, May 21, 2013 at 3:46 PM, Andy Wingo <wi...@pobox.com> wrote:

> You should have two names: the original ones and the gensyms that come
> from tree-il.  Creating new gensyms should happen when copying or
> fabricating new nodes, as peval does, but in most cases you don't need
> to do it, and in any case it can be tricky.
>
> I would take tree-il as the guide here.
>

I'll look at it, thanks.


> I haven't handled source information yet, but to the CPS->RTL compiler
> it will look like emitting special instructions, like the tree-il->glil
> compiler emits <glil-source> nodes.
>

That sounds fairly simple to implement.


> This is lambda-properties.  You just pass them through, and add them to
> the begin-program in the RTL.
>

Again, this seems relatively simple to do.


> Note that wip-rtl-may-2013 and the RTL branches that are under review
> for master are slightly different from the ones you have.  Their
> begin-program has a second argument, the procedure properties, and the
> first argument is a label and not a name.  They have begin-*-arity and
> end-arity for marking arity information and performing arity prologues.
> There are some slight changes to instructions but not much.  OTOH they
> do have some better type checking and a disassembler that works, so many
> things should be easier ;) Compare the rtl.test there and your rtl.test
> for details.
>
> >       * Why is there no "let" that can bind functions?  You don't always
> >     want
> >        to set up a recursive binding environment.
>

I think right now the Tree-IL->CPS compiler will turn (let ((f (lambda
...))) ...) into something like this:

((lambda (f-12345)
  .... let body here ....)
 (letrec ((f-func (lambda ... f's body here ...))) f-func))

(I'm not showing the continuation's name because it would make it even more
complicated than it already is.)

I agree that this is a crazy way to do it. It should detect this case and
skip the extra steps.


> Understood.  However the question of language is fundamental for
> enabling collaboration on this code.  I would be very happy to see a CPS
> language definition that could express all of Tree-IL.  I don't think
> this would take a lot of work -- it is perfectly acceptable to throw
> "unimplemented" for those parts of the compiler that aren't there yet,
> but the language itself should be adequately expressive.  IMHO anyway.
>
> Do you think you will have time to do that over the next few days or so?
> Apologies for the pressure, just that I would like to do some things in
> this area and am not sure how best to do them :)
>

This is interesting - I had been adding to the language as I needed
features, and not really thinking of it as an interface. But you might be
right. I just started rebasing tonight, and I hope to work more on it in
the next two days. But I don't want to be a blocker for your work - what
are you trying to do?

Thanks a lot,
Noah

Reply via email to