caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Stopping a value from getting GC'd
@ 2005-08-17  4:12 Jonathan Roewen
  2005-08-17  5:36 ` Bardur Arantsson
  0 siblings, 1 reply; 8+ messages in thread
From: Jonathan Roewen @ 2005-08-17  4:12 UTC (permalink / raw)
  To: caml-list

Hi,

I have the following in my C code:

struct caml_thread_struct {
	char * bottom_of_stack;
	unsigned long last_retaddr;
	value * gc_regs;
	char * exception_pointer;
	struct caml__roots_block * local_roots;
	int is_running;
	value closure;
};

typedef struct caml_thread_struct * caml_thread_t;

static value Val_thread(caml_thread_t thread) {
	CAMLparam0();
	CAMLlocal1(rv);
	rv = caml_alloc(1, Abstract_tag);
	Field(rv,0) = (value) thread;
	CAMLreturn(rv);
}

#define Thread_val(rv) ((caml_thread_t)Field((rv),0))

Now my question is, since my Thread.t is abstract, once I pass my
value to my Thread.create, there'll soon be nothing referencing the
closure for the thread that's visible by the GC.

If I'm correct, the GC would then be allowed to reclaim this closure.
So how do I stop the GC from doing that?

Jonathan


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2005-08-18 17:13 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-08-17  4:12 [Caml-list] Stopping a value from getting GC'd Jonathan Roewen
2005-08-17  5:36 ` Bardur Arantsson
2005-08-18  1:31   ` Cost of register_global_root (was: Stopping a value from getting GC'd) Nathaniel Gray
2005-08-18  2:40     ` [Caml-list] Cost of register_global_root Alain Frisch
2005-08-18  5:19       ` Nathaniel Gray
2005-08-18  3:57     ` [Caml-list] Cost of register_global_root (was: Stopping a value from getting GC'd) Markus Mottl
2005-08-18 17:13       ` skaller
2005-08-18 10:51     ` Richard Jones

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).