[LLVMdev] Tag number of OCaml Variant in executionengine

Jianzhou Zhao jianzhou at seas.upenn.edu
Mon Mar 1 07:34:03 PST 2010


Another quick question.
In ./bindings/ocaml/Makefile.ocaml, the configurations when
ENABLE_OPTIMIZED<>1 are commented, which set -g flag to $(OCAMLC).
Is that for back-compatibility to support OCaml < 3.10.0?

On Sun, Feb 28, 2010 at 6:48 PM, Erick Tryzelaar
<idadesub at users.sourceforge.net> wrote:
> On Sun, Feb 28, 2010 at 8:38 AM, Jianzhou Zhao <jianzhou at seas.upenn.edu> wrote:
>> Hi,
>>
>> At the code below from
>> ./bindings/ocaml/executionengine/executionengine_ocaml.c,
>> we create an OCaml Variant from C. It is from 2.6, the latest 2.7 has
>> the same code.
>>
>> Line 240 Option = alloc(1, 1) assigns tag1 to the 'some' constructor.
>> In term of http://caml.inria.fr/pub/docs/manual-ocaml/manual032.html,
>> I think the 'some' should have a tag 0. We dont have a runtime error
>> for this, the reason might be there is only two constructors, one
>> is None represented as unboxed int, the other is Some represented
>> as a tagged block, and OCaml runtime may only distinguish them
>> as the structures, but not the tag number.
>
> Sounds reasonable. I'll make the change to make things more
> consistent. Also, I see that we aren't properly protecting our option
> values against the GC in a couple places. I'll make those changes too.
>
> -e
>



-- 
Jianzhou



More information about the llvm-dev mailing list