The way Ocaml inlines

From: Juan Jose Garcia Ripoll (jjgarcia@ind-cr.uclm.es)
Date: Thu Jan 14 1999 - 10:49:48 MET


Date: Thu, 14 Jan 1999 10:49:48 +0100
From: Juan Jose Garcia Ripoll <jjgarcia@ind-cr.uclm.es>
To: Caml list <caml-list@pauillac.inria.fr>
Subject: The way Ocaml inlines

David McClain wrote:
>
> >(particularly if you inline it).
>
> Is there a way to explicitly inline functions, other than cut and paste?

By watching OCaml work, and studying the compiler, I've seen it inline
many small functions, even when they are defined in other modules. I
pretty much like this, but I find only one minor inconvenience about the
way OCaml inlines. It is this one: say that you have

        module Foo = struct
        let ap_succ f n = f (n +. 1.0)
        let test a =
           let my_f x = cos x
           in ap_succ my_f a
        end

After inlining, the result is not a sort of
        let test a = cos (n +. 1.0)
but something like
        let my_f x = cos x
        let test a = generic_apply my_f (a +. 1.0)
It is even worse if `my_f' uses, for instance, `a', because then a
closure is built, which would not be necessary. I think this could be
solved by making the `inliner' a bit smarter and re-inlining the
functions that are applied. This would make it attractive and efficient
to write small useful functions in separate modules.

Regards
        Juanjo

-- 
Juan Jose Garcia Ripoll		www: http://www.arrakis.es/~worm
Dpto. de Matematicas		job: jjgarcia@ind-cr.uclm.es
E.T.S.I. Industriales		home: worm@arrakis.es
Univ. de Castilla-La Mancha, Ciudad Real E-13071 (Spain)



This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:17 MET