lightning
[Top][All Lists]
Advanced

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

Re: [Lightning] Re: Stack register control?


From: Eli Barzilay
Subject: Re: [Lightning] Re: Stack register control?
Date: Mon, 1 Oct 2007 19:20:04 -0400

On Oct  1, Sandro Magi wrote:
> On 10/1/07, Eli Barzilay <address@hidden> wrote:
> >
> > The 1.8mb is the size of our excutable, which implements the
> > language (MzScheme).  Things that are defined in the language get
> > jitted (through lightnin), and are not included in the executable
> > itself.
> 
> I was just wondering how much of that 1.8 MB was due to Lightning's
> macro-expansions.

We didn't measure that.  If you really want, I can dig up the exact
revision where the JIT was added, and you can build the before and
after to see the sizes.  (We used to have a Scheme interface to
lightning, which included calls for all lightning macros, and IIRC the
file size was somewhere in the 700kb.  I'm not sure that this has any
significance though.)


> I'm not sure I understand why you start from 1.8 MB plus the 1 MB
> when including LLVM.  Is it that the JIT code to use LLVM or
> Lightning is largely similar, and so can be excluded from
> consideration?  Lightning must add something to the executable size.

Yes, the current 1.8mb includes the lightning jit code.  The LLVM
project was trying to make it possible to create native code through
LLVM (again, not compile mzscheme itself) and including LLVM in the
core executable was too expensive (size-wise).


> Slightly OT, but since you work on MzScheme, I very much like "An
> Incremental Approach to Compiler Construction" in Scheme paper
> [1]. I imagine it's very similar to the approach used in MzScheme,
> but using Lightning as a portable backend instead of raw x86.

I'm not sure about that.  IIRC, Aziz (who is working with Kent Dybvig,
who is the implementor behind Chez Scheme) started his project with a
native code compiler, whereas Matthew added the JIT to MzScheme by
basically inlining the core C evaluator.  (But all of this is
guessing.)

-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                  http://www.barzilay.org/                 Maze is Life!




reply via email to

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