|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3-RESEND 12/28] libxl: ocaml: make Val_defbool GC-proof
Hi,
> On Oct 31, 2013, at 7:10 PM, "Ian Campbell" <Ian.Campbell@xxxxxxxxxx> wrote:
>
>> On Thu, 2013-10-31 at 18:57 +0000, Ian Jackson wrote:
>> Ian Jackson writes ("Re: [PATCH v3-RESEND 12/28] libxl: ocaml: make
>> Val_defbool GC-proof"):
>>> What difference do you think it makes whether things are "assigned to
>>> variables" or not ?
>>>
>>> Bonus if your explanation refers to sequence points.
>>
>> Perhaps these special CAMLlocal macros make the things volatile or
>> something, I guess.
>
> They seem to end up being structs.
IIRC the CAML{param,local} macros put the values into structs which can be
reached from a GC root (the previous interface used macros called something
like "Begin_roots" "End_roots"). Any value you've allocated and you want to
keep had better be reachable when the GC comes calling -- so I tend to
obsessively use the macros everywhere. You can optimise them away but if you
call a function which ends up allocating, one time in a hundred the minor heap
will be full, it'll do a sweep and deallocate anything unreachable. Having been
bitten too many times, I'd rather sacrifice a little performance for safety
there :)
It is quite hard to write good ocaml c stubs, because you're caught between the
two worlds. To appease the GC you have to write some fairly unidiomatic C. FYI
there's an exciting new way of building C stubs through a library called
"ctypes" being written by Jeremy Yallop from OCamlLabs-- we should check it out
for version 2 of these bindings...
Cheers,
Dave
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |