[Top][All Lists]

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

Re: What happened to the ex-Guile VM?

From: Keisuke Nishida
Subject: Re: What happened to the ex-Guile VM?
Date: Tue, 20 Mar 2001 22:45:09 -0500
User-agent: Wanderlust/2.4.0 (Rio) SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/21.0.99 (i686-pc-linux-gnu) MULE/5.0 (SAKAKI)

At 20 Mar 2001 22:52:34 +0100,
Marius Vollmer wrote:
> > I found somebody was working on a bytecode interpreter (VM) for
> > Guile around 1997.
> Was this the coupling of Guile to a Java Virtual Machine, "Latte"?

I'm not sure.  This message:

> As to a future integration of your VM into Guile, I'd say that it
> would simplify things a lot when you try to keep the many different
> improvements in guile-vm as separate (or `orthogonal') as possible.
> That is, it will much easier to switch to your VM, when we don't also
> have to switch to your module system.  Or the other way around.

You don't have to, but in order to support the current module system,
you need to add a support of it (which should be easy, by the way;
just to replace a few functions).

However, the compiler is more closely related to the module system.
I needed a new module system for a better compilation support.

(By the way, the current modules are automatically converted into
the new modules, so you can still use existing modules.)

> It will also be important to know how stanards conforming your VM is.
> Does it handle continuations correctly?

Within the VM, yes, by stack copying.  But I haven't thought of
C level continuations.  Should they be supported?

> >   % bigloo -O6 fib.scm ;; version 2.2b
> >   % time a.out
> >   1346269
> >   real      0m0.271s
> >   user      0m0.240s
> >   sys       0m0.020s
> This is impressive.  This is a speedup of 88.  A hand-coded fixnum
> only Lightning version of fib gives a speed up of about 230.  Does
> bigloo use generic arithmetic?

It seems to be using fixnums.  With generic arithmetic, it slows
down a lot:

  % cat fib.scm
  (module fib)
  (define (fib n::int) (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2)))))
  (display (fib 30))
  % bigloo -O6 fib.scm
  % time a.out
  real  0m1.302s
  user  0m1.280s
  sys   0m0.000s

reply via email to

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