caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Alain Frisch <alain.frisch@lexifi.com>
To: Pierre Chambart <pierre.chambart@ocamlpro.com>,
	"Soegtrop, Michael" <michael.soegtrop@intel.com>,
	"caml-list@inria.fr" <caml-list@inria.fr>
Subject: Re: [Caml-list] Specify the default hash function for a type
Date: Fri, 13 May 2016 15:56:32 +0200	[thread overview]
Message-ID: <44df5d5e-8ad9-1a86-7fda-bfc203bfb479@lexifi.com> (raw)
In-Reply-To: <5735DBB9.5050101@ocamlpro.com>

FWIW, I was not seriously suggesting this.  That said, ..., the case 
should be relatively safe, since the code generated by OCaml never reads 
the tag of record values (it is assumed to be 0).  The tag should only 
be read by polymorphic primitives, which don't receive any information 
from the OCaml optimizer.  So I don't see how the optimizer could break 
the (not-really-)suggested hack, except on purpose.

Alain



On 13/05/2016 15:50, Pierre Chambart wrote:
> For those who don't see that as a joke, please forget everything about that.
> Obj.set_tag is an extremely dangerous function as the compiler assumes that
> value's tag never change, even for completely unknown values. Hence, it
> might
> be legal for the compiler to do something that you might not expect on:
>
> let f x =
>   let x' = Obj.repr x in
>   let tag = Obj.tag x' in
>   Obj.set_tag x' 0
>   let ... = match x with ... in
>   Obj.set_tag x' tag;
>   match x with ...
>
> The access to the tag can be shared for instance. And lots of
> 'surprising' stuff might happen.
> This is of course a quite brutal example but this could apply to a lot
> of less obvious situation !
>
> So Obj.magic and Obj.set_field : bad
> Obj.set_tag: really really bad !
>

  reply	other threads:[~2016-05-13 13:56 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-13  7:52 Soegtrop, Michael
2016-05-13  8:13 ` Ben Millwood
2016-05-13  8:40   ` Soegtrop, Michael
2016-05-13  9:06 ` Alain Frisch
2016-05-13  9:26   ` Soegtrop, Michael
2016-05-13 12:01     ` Gabriel Scherer
2016-05-13 12:23       ` Alain Frisch
2016-05-13 12:32       ` Soegtrop, Michael
2016-05-13 13:50   ` Pierre Chambart
2016-05-13 13:56     ` Alain Frisch [this message]
2016-05-13 16:17       ` Soegtrop, Michael
2016-05-13 18:57         ` Thomas Braibant
2016-05-13 22:45           ` Soegtrop, Michael
2016-05-14  8:41             ` Thomas Braibant
2016-05-14  9:06               ` Soegtrop, Michael
2016-05-17 13:03                 ` Soegtrop, Michael

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=44df5d5e-8ad9-1a86-7fda-bfc203bfb479@lexifi.com \
    --to=alain.frisch@lexifi.com \
    --cc=caml-list@inria.fr \
    --cc=michael.soegtrop@intel.com \
    --cc=pierre.chambart@ocamlpro.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).