caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Martin Jambon <martin.jambon@ens-lyon.org>
To: Alain Frisch <alain@frisch.fr>
Cc: Caml List <caml-list@inria.fr>, Jeremy Yallop <yallop@gmail.com>
Subject: Re: [Caml-list] segfault in simple program with 4.02 native
Date: Sun, 07 Sep 2014 18:28:34 -0700	[thread overview]
Message-ID: <540D0642.7090205@ens-lyon.org> (raw)
In-Reply-To: <540CA84F.8090708@frisch.fr>

On Sun 07 Sep 2014 11:47:43 AM PDT, Alain Frisch wrote:
> On 9/6/2014 7:51 AM, Martin Jambon wrote:
>> Thanks for the explanation, Jeremy. I guess atdgen will have to use
>> "option refs" after all unless someone has a better idea.
>
> I might be missing some context, but the current code seems to playing
> two different tricks with the type system:  using (Obj.magic 0.) as a
> dummy initial default value (to avoid references) and mutating
> normally immutable fields with Obj.set_field.  Is that right?

Yes, exactly.

>  You
> might be able to keep the first trick, but storing the values in local
> references instead of field of the the target record (if those
> references don't espace from the function, they will be represented as
> local mutable variables, whose mutation might actually be more
> efficient than those of the record fields),  building the target
> record at the end by reading from those references.

Christophe Troestler also suggested this solution in a private reply. I 
was afraid of the cost of the refs, so it's great to know that they're 
optimized away.

I want to thank everyone for their suggestions. It's very helpful.

Martin


  reply	other threads:[~2014-09-08  1:28 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-05 21:33 Ashish Agarwal
2014-09-05 21:50 ` Andy Ray
2014-09-05 21:56 ` Richard W.M. Jones
2014-09-05 22:01   ` Sebastien Mondet
2014-09-05 22:06   ` Ashish Agarwal
2014-09-05 22:13     ` Richard W.M. Jones
2014-09-05 22:18       ` Richard W.M. Jones
2014-09-05 22:36         ` Török Edwin
2014-09-05 22:39         ` Martin Jambon
2014-09-05 23:39           ` Ashish Agarwal
2014-09-05 23:59             ` Martin Jambon
2014-09-06  0:12           ` Jeremy Yallop
2014-09-06  5:51             ` Martin Jambon
2014-09-06  6:00               ` Milan Stanojević
2014-09-06  7:46                 ` Frédéric Bour
2014-09-06 19:15                   ` Martin Jambon
2014-09-06 19:08                 ` Martin Jambon
2014-09-06 20:31                   ` David MENTRÉ
2014-09-06 21:57                     ` Martin Jambon
2014-09-07  7:34                       ` David MENTRÉ
2014-09-07 18:47               ` Alain Frisch
2014-09-08  1:28                 ` Martin Jambon [this message]
2014-09-13 10:26                   ` Martin Jambon
2014-09-14  7:41                     ` Martin Jambon
2014-09-05 22:18       ` Christoph Höger

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=540D0642.7090205@ens-lyon.org \
    --to=martin.jambon@ens-lyon.org \
    --cc=alain@frisch.fr \
    --cc=caml-list@inria.fr \
    --cc=yallop@gmail.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).