caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Wojciech Meyer <wojciech.meyer@googlemail.com>
To: Benedikt Meurer <benedikt.meurer@googlemail.com>
Cc: caml-list@inria.fr, Marcell Fischbach <marcellfischbach@googlemail.com>
Subject: Re: [Caml-list] Linear Scan Register Allocator for ocamlopt/ocamlnat
Date: Mon, 1 Aug 2011 16:29:23 +0100	[thread overview]
Message-ID: <CAOg1smBk+vn61unew+MeY=rk_mQGWN-L0iwFst=C-DUnL2n+vQ@mail.gmail.com> (raw)
In-Reply-To: <93199F3B-E9CF-4D93-9B2B-BAAB03F4FC08@googlemail.com>

[-- Attachment #1: Type: text/plain, Size: 2639 bytes --]

On Mon, Aug 1, 2011 at 3:53 PM, Benedikt Meurer <
benedikt.meurer@googlemail.com> wrote:

> Hello,
>
> As mentioned earlier we have a student working on an implementation of the
> Linear Scan Register Allocator [1] for ocamlopt (and thereby ocamlnat). It
> took some time, but now there's a first working patch which looks promising.
> This work is done by Marcell Fischbach as part of his diploma thesis. The
> idea is to use the linear scan algorithm to drive the register allocation in
> the native top-level ocamlnat at some point, as suggested by Fabrice Le
> Fessant [2].
>
> Marcell is now working to implement a proof-of-concept of an inline
> assembler for ocamlnat on i386 based on code from Alain Frisch an Fabrice Le
> Fessant. The result will also be contributed once ready, and will be used to
> effectively compare ocamlnat and the byte-code ocaml top-level.
>
> The linear scan implementation reuses as much of the existing ocamlopt
> functionality as possible, so additional maintenance overhead should be
> manageable. Comments and suggestions are welcome of course. Please keep
> Marcell CC'ed with any replies as he's not subscribed to the list.
>

Hello Benedikt,

It's also worth to note that there is some generic mid/back-end code ready,
in my OCaml native compiler framework called DragonKit in a spirit of LLVM,
which I am currently actively working on. It's already able to express a toy
language and JIT compile and run it within the same process on top of x86
architecture:

The code includes:
- SSA based IL using polymorphic variants
- monadic code generator
- plugable passes using first class modules
- very ad-hoc register allocator
- X86 backend
- example that evolved from LLVM kaleidoscope ported to DragonKit to
Pascal/ML like language, and another example using direct translation to X86
backend.

The code is functorised and almost purely functional (with few exceptions
where there is no benefit of doing that).

Maybe it could have some use in your new toplevel, or maybe it would be
worth to reuse some of your work in DragonKit (or viceversa).

I welcome anybody wanting to join me in this effort.

Please take a look at:

www.github.com/danmey/DragonKit

Cheers;
Wojciech


greets,

> Benedikt
>
>
> [1] http://portal.acm.org/citation.cfm?id=330250
> [2]
> http://caml.inria.fr/pub/ml-archives/caml-list/2010/11/a1b0ed0934ff51df4ac07c5e9da6e9d6.en.html
>
>
> --
> Caml-list mailing list.  Subscription management and archives:
> https://sympa-roc.inria.fr/wws/info/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
>

[-- Attachment #2: Type: text/html, Size: 3720 bytes --]

  parent reply	other threads:[~2011-08-01 15:29 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-01 14:53 Benedikt Meurer
2011-08-01 15:03 ` [Caml-list] " Benedikt Meurer
2011-08-01 15:04 ` [Caml-list] " Gabriel Scherer
2011-08-01 16:57   ` Benedikt Meurer
2011-08-24 19:35   ` Benedikt Meurer
2011-08-24 20:40     ` Gerd Stolpmann
2011-08-25  8:02       ` Benedikt Meurer
2011-08-25  9:34         ` Benedikt Meurer
2011-08-25 10:21           ` Gerd Stolpmann
2011-08-25 10:25             ` Pierre-Alexandre Voye
2011-08-26 10:58               ` Guillaume Yziquel
2011-08-26 12:29               ` Erik de Castro Lopo
     [not found]                 ` <CANnJ5GfmnOhk8mJor8PfrGoC1-5vZWOgUKNZMT9k69iu0TBCeA@mail.gmail.com>
     [not found]                   ` <CANnJ5Gf4AnKPDvrKiYx0joiPbQVOCdFWgPR24Y1ZYYL1Qv5=fg@mail.gmail.com>
2011-08-26 18:33                     ` Pierre-Alexandre Voye
2011-08-30 21:07                       ` Fermin Reig
2011-08-30 21:21                         ` Pierre-Alexandre Voye
2011-08-25 10:43             ` Benedikt Meurer
2011-08-24 20:47     ` malc
2011-08-26 12:40     ` Roberto Di Cosmo
2011-08-01 15:29 ` Wojciech Meyer [this message]
2011-08-01 17:03   ` Benedikt Meurer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAOg1smBk+vn61unew+MeY=rk_mQGWN-L0iwFst=C-DUnL2n+vQ@mail.gmail.com' \
    --to=wojciech.meyer@googlemail.com \
    --cc=benedikt.meurer@googlemail.com \
    --cc=caml-list@inria.fr \
    --cc=marcellfischbach@googlemail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).