Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: David Brown <caml-list@davidb.org>
To: Michael Wohlwend <mwohlwend@web.de>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] c-interface question...
Date: Thu, 18 Sep 2003 11:12:15 -0700	[thread overview]
Message-ID: <20030918181215.GA8189@davidb.org> (raw)
In-Reply-To: <oprvosmiif4xhsek@smtp.web.de>

On Thu, Sep 18, 2003 at 10:31:20AM +0200, Michael Wohlwend wrote:

> external md5_new : unit -> md5_context = "md5_new"
> 
> should it be:
> 
> CAMLparam1(unit);

> as it receives a unit-paramter?

It won't hurt anything to do this, other than performance.  The only
arguments that need to be declared in a CAMLparamx declaration are those
that can be moved or collected by the garbage collector.  Specifically,
integer values do not need to be declared.

There is also no need to CAMLparam an argument that you do not use, even
if it is a heap value.

An added "optimization" is that if an argument is only used before the
first allocation you call, it also doesn't need to be declared.

It helps to think about what is happening here.  Things that allocate
memory may trigger a garbage collection.  If you have arguments or
variables that might be affected by the garbage collector, you need to
tell the gc about them.  That is what CAMLparamx and CAMLlocal do.

A function that only allocates one thing, and doesn't reference its
variables after the allocation doesn't need to use any of these macros.

Dave Brown

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  parent reply	other threads:[~2003-09-18 18:18 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-18  8:31 Michael Wohlwend
2003-09-18 12:08 ` David Baelde
2003-09-18 18:12 ` David Brown [this message]
2003-09-19 14:44   ` Richard Jones

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=20030918181215.GA8189@davidb.org \
    --to=caml-list@davidb.org \
    --cc=caml-list@inria.fr \
    --cc=mwohlwend@web.de \
    /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