Re: Git development

Howard Thomson <[email protected]> Sat, 15 Aug 2009 23:12:35 +0100
Newsgroups gmane.comp.lang.eiffel.gobo.devel
Message-ID <[email protected]>
Hi Wolfgang,

On Saturday 15 August 2009, you wrote:

> May it help you to re-use my introspection code?
> It sees all references on stack, all global references (i.e. values of 
> once functions)
> and, starting on these references, all references on heap.

Yes, it would be useful [necessary ...] to ensure that there is one way to make
available, to both the GC and debugger, all relevant info.

The specific code generation case that I was referring to is where C code is generated
with two or more arguments to a routine [excluding Current], each of which is a memory-allocating
funtion that returns a reference [where the return value is the only extant reference], and therefore
the GC needs to have access to a value that is not a declared C variable.

In C terms:

void * f_allocate() {
	/* This routine allocates memory [create ...] and may instigate a GC collection */
	return(GC_alloc_memory(...));
}

void called_routine(void *a_Current, void *a1, void *a2) {
	/* do something [not relevant] with arguments */
	xxx = a1;
	yyy = a2;
}

If the routine call:

	called_routine(Current, f_allocate(), f_allocate());

occurs in the generated C code then the GC, if invoked from the f_allocate call that occurs second, then
the one and only reference to the memory returned by the first f_allocate call is only accessible via a
C compiler unnamed temporary.

Does your stack tracing code track, precisely, i.e. not conservatively, such compiler temporaries ?

Do you develop on Windows or Linux ?

If you want to look at [an earlier version of] my code, it is available at:
www.ashford-ht.vm.bytemark.co.uk as a compressed tar download, admittedly more suitable for Linux developers ...

Regards,

Howard

> The debugger uses this for checkpointing.
> A critical point in the GC case may be to make the things on stack
> visible. In case of the debugger, making stack variables visible
> is necessary for printing the variables, using their visibility
> for checkpointing is a by-product. But additional code is needed
> (run at most once per routine) to get the addresses. The additional code
> may be considered too heavy for every days work.
> 


-- 
Howard Thomson

--
"Only two things are infinite, the universe and human stupidity,
and I'm not sure about the former." -- Albert Einstein

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july

_______________________________________________
gobo-eiffel-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gobo-eiffel-develop