<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
You are right, John. The only problem on Mac is the C++ overloading
issue.<br>
<br>
Sorry for the confusion.<br>
<br>
-Xiaobin <br>
<br>
On 04/02/09 14:31, John Coomes wrote:
<blockquote cite="mid:18901.11974.28220.563828@sun.com" type="cite">
  <pre wrap="">Xiaobin Lu (<a class="moz-txt-link-abbreviated" href="mailto:Xiaobin.Lu@Sun.COM">Xiaobin.Lu@Sun.COM</a>) wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">On Mac OS X, I believe intptr_t is typedefed as "int" on both 32 &amp; 64 
bit. So, sizeof(intptr_t) on 64 bit Mac OS is still 4 and size(void*) is 8.
    </pre>
  </blockquote>
  <pre wrap=""><!---->
intptr_t has to be big enough to hold a void* (it's in the c99
standard).

I think there were c++ overloading problems on MacOS because 32-bit
intptr_t is unsigned long, instead of unsigned int as it is on Solaris
&amp; Linux.  Even though they're the same size, overloading considers
them different types.

-John

  </pre>
  <blockquote type="cite">
    <pre wrap="">John Coomes wrote:
    </pre>
    <blockquote type="cite">
      <pre wrap="">Paul Hohensee (<a class="moz-txt-link-abbreviated" href="mailto:Paul.Hohensee@Sun.COM">Paul.Hohensee@Sun.COM</a>) wrote:
  
      </pre>
      <blockquote type="cite">
        <pre wrap="">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.
    
        </pre>
      </blockquote>
      <pre wrap="">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

  
      </pre>
      <blockquote type="cite">
        <pre wrap="">Christian Thalinger wrote:
    
        </pre>
        <blockquote type="cite">
          <pre wrap="">On Thu, 2009-04-02 at 09:54 -0400, Paul Hohensee wrote:
  
      
          </pre>
          <blockquote type="cite">
            <pre wrap="">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.
    
        
            </pre>
          </blockquote>
          <pre wrap="">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

  
      
          </pre>
        </blockquote>
      </blockquote>
      <pre wrap="">  
      </pre>
    </blockquote>
  </blockquote>
  <pre wrap=""><!---->
  </pre>
</blockquote>
<br>
</body>
</html>