<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
If the platform-dependent versions are assembly code templates, then<br>
it's likely at some point that the C++ compiler(s) didn't inline
properly<br>
using your suggested code.  I haven't looked in awhile, but I'm pretty
sure there<br>
are some places that use your style of code and others that don't for<br>
because of that.<br>
<br>
Paul<br>
<br>
Christian Thalinger wrote:
<blockquote cite="mid:1238653402.3168.37.camel@localhost.localdomain"
 type="cite">
  <pre wrap="">On Mon, 2009-03-30 at 15:38 -0700, John Coomes wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">The Atomic class has both

  intptr_t cmpxchg_ptr(intptr_t, volatile intptr_t*, intptr_t);
  void*    cmpxchg_ptr(void*, volatile void*, void*);

The latter could be implemented as a simple inline which calls the
former:

  void* cmpxchg_ptr(void* exchange_value, volatile void* dest,
                    void* compare_value) {
    return (intptr_t)cmpxchg_ptr((intptr_t)exchange_value,
                                 (volatile intptr_t*)dest,
                                 (intptr_t)compare_value
   }

However, both the intptr_t and void* variants have bodies defined in
each of the various platform-specific headers (e.g.,
atomic_windows_x86.inline.hpp, atomic_solaris_x86.inline.hpp, ...).
So there are 10 places where the cmpxchg_ptr(void*...) variant is
defined, instead of one.  Is there a reason for the duplication?
    </pre>
  </blockquote>
  <pre wrap=""><!---->
I don't see a reason for the duplication.  Maybe it's another historic
artifact?

-- Christian

  </pre>
</blockquote>
</body>
</html>