From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id BE313BC58 for ; Mon, 13 Sep 2010 14:23:12 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnMEAL60jUxQW+UMgWdsb2JhbACTdo1QFQEBFiIivmmFQASIfoEphVxo X-IronPort-AV: E=Sophos;i="4.56,359,1280700000"; d="scan'208";a="59179791" Received: from lo.gmane.org ([80.91.229.12]) by mail2-smtp-roc.national.inria.fr with ESMTP; 13 Sep 2010 14:23:05 +0200 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1Ov83t-00080A-09 for caml-list@inria.fr; Mon, 13 Sep 2010 14:23:05 +0200 Received: from ks368928.kimsufi.com ([94.23.39.26]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 13 Sep 2010 14:23:04 +0200 Received: from sylvain by ks368928.kimsufi.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 13 Sep 2010 14:23:04 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: caml-list@inria.fr From: Sylvain Le Gall Subject: Re: How to re-implement the GC? Date: Mon, 13 Sep 2010 12:22:56 +0000 (UTC) Message-ID: References: X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: ks368928.kimsufi.com User-Agent: slrn/pre1.0.0-11 (Linux) X-Spam: no; 0.00; le-gall:01 re-implement:01 eray:01 ozkural:01 eray:01 ozkural:01 pitfalls:01 compiler:01 compiler:01 modular:01 afaik:01 pointer:01 ocaml:01 runtime:01 ocaml:01 On 13-09-2010, Eray Ozkural wrote: >> On 13-09-2010, Eray Ozkural wrote: >> > Hi there, >> > >> > What exactly are the requirements for substituting the current GC with >> > another, preferably non-locking, GC? Any pitfalls I wouldn't see just >> > reading the code? >> > >> >> The GC is deeply interacting with the the rest of the compiler. I think >> you will spend a lot of time on this task. >> >> > Deeply interacting with the compiler, how? Not through the public interface > of GC? Do you mean it is not used in a clean way? > I am not sure how you define "clean way". I think it is very efficient, but not "modular or object-oriented". I would say that it is clean with regard of the efficiency. But I won't use it to demonstrate how GC works to student (but I won't either show them real world implementation of other GC which are always more complex when optimization is required). AFAIK, it uses some machine register to store a pointer to the minor heap. But I am not a GC expert. > >> I would recommend you trying OC4MC, which is probably what you are >> looking for: >> http://www.algo-prog.info/ocmc/web/ >> >> > Yes, I've seen it but it's a work in progress, and it's being rewritten from > scratch. > > If you stick to 3.11.1 OCaml version, you'll be able to compile with one of their latest "stable" patch. To be honest, I think that if you join your efforts with theirs, you'll probably get something quicker than going alone on this path. But this is only my opinion. At least, you will need the "fully-reentrant" runtime they are doing. >> They show quite interesting results using Thread at the last OCaml >> Meeting, though they are still some bugs (almost linear speed-up with >> multicore). >> > > > What exactly is the GC being used there? Is it a custom algorithm or a known > one? Could we plug our own algorithm to the oc4mc if it has already provided > the basic changes to substitute the GC? > I think you won't be able to plugin your own GC. The one they provide is a "stop the world"... I am not sure though, ask them directly. Regards, Sylvain Le Gall