On Wed, 2012-01-11 at 08:09 +1100, Richard Henderson wrote:
> On 01/11/2012 12:43 AM, Torvald Riegel wrote:
> >> One could steal code from bohem-gc for this.
> >> See GC_get_stack_base in os_dep.c.
> > 
> > Thanks for the pointer.  I looked at this code, and it seems fairly
> > complex given the dependencies on OS/libc and OS/libc behavior.  From a
> > maintenance point-of-view, does it make sense to copy that complexity
> > into libitm?  boehm-gc is used in GCC, so perhaps that's not much of a
> > problem, however.  I also looked at glibc's memcpy implementations, and
> > copying those plus a simple byte-wise copy for the generic case could be
> > also a fairly clean solution.
> > Also, is the license compatible with the GPL wrt. mixing sources?
> 
> From the maintenance point of view, I do think it makes sense to copy.
> As for the license, I expect we'd want to copy into a separate file so
> that we can keep things vaguely separated.
> 
> > What about keeping the patch/hack that I posted for now, creating a PR,
> > and looking at this again for another release?
> 
> I suppose that's not unreasonable.  Ok with...
> 
> > +static inline void *
> > +mask_stack_bottom(gtm_thread *tx)
> > +{
> > +  return (uint8_t*)__builtin_dwarf_cfa() - 128;
> > +}
> 
> Not only can this not be inline, it must be out-of-line.  Otherwise you're 
> not including the stack frame of gtm_undolog::rollback much less memcpy.  You 
> could get this result inline if you specialized for the arch by looking at 
> the hard stack pointer register, but __builtin_dwarf_cfa is at the wrong end 
> of the stack.

Oops.  Based on the previous code I thought it would return the bottom
end of the stack frame.  Made this function noinline and moved it to
config/generic/tls.c.

> 
> You might as well make the fudge factor a lot larger.  Like 4-8k.

Opted for 256 because too large might prevents undos to more than
expected with tight stack space.

> 
> > +          if (likely(ptr > top || (uint8_t*)ptr + len <=bot))
> 
> Missing space before "bot".

Committed with those changes as rev 183172.  Created PR libitm/51855.


Reply via email to