Atomic::cmpxchg_ptr code duplication

John Coomes John.Coomes at sun.com
Thu Apr 2 13:54:51 PDT 2009


Paul Hohensee (Paul.Hohensee at Sun.COM) wrote:
> Sometimes compilers don't inline all the way through a call stack,
> i.e., they may have limits on inlining depth.  It's not a matter for
> the preprocessor, since we're talking methods, not macros.
> 
> Assembly code template are things like gcc asm statements or
> .il functions.  Doesn't matter which.  What matters is whether the
> compiler actually inlines the asm code where you want it.

That's the kind of thing I was actually wondering about, along with
portability--consolidating them only works if sizeof(void*) ==
sizeof(intptr_t) on every platform.  They're the same on the platforms
SE supports, but maybe there are some oddball embedded platforms
around.

-John

> Christian Thalinger wrote:
> > On Thu, 2009-04-02 at 09:54 -0400, Paul Hohensee wrote:
> >   
> >> If the platform-dependent versions are assembly code templates, then
> >> it's likely at some point that the C++ compiler(s) didn't inline
> >> properly
> >> using your suggested code.  I haven't looked in awhile, but I'm pretty
> >> sure there
> >> are some places that use your style of code and others that don't for
> >> because of that.
> >>     
> >
> > Hmm, not sure I understand.  AFAIK it makes no difference for inlining
> > in what header file the inline is defined, as long as both are included
> > and the compiler (preprocessor) finds it.  Or do you mean something
> > different by "assembly code templates", like .il files?
> >
> > -- Christian
> >
> >   




More information about the hotspot-dev mailing list