Issue Details (XML | Word | Printable)

Key: STDCXX-563
Type: Improvement Improvement
Status: Resolved Resolved
Resolution: Fixed
Priority: Minor Minor
Assignee: Farid Zaripov
Reporter: Martin Sebor
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
C++ Standard Library

split up rw/_mutex.h

Created: 18/Sep/07 05:59 PM   Updated: 13/Oct/08 04:45 PM
Return to search
Component/s: Build and Installation
Affects Version/s: 4.2.0
Fix Version/s: 4.2.2

Time Tracking:
Original Estimate: 4h
Original Estimate - 4h
Remaining Estimate: 0h
Time Spent - 4h
Time Spent: 4h
Time Spent - 4h

File Attachments:
  Size
Text File Licensed for inclusion in ASF works stdcxx-563.patch 2008-05-15 03:33 PM Farid Zaripov 119 kB

Patch Info: Patch Available
Severity: Cosmetic
Resolution Date: 17/Sep/08 01:50 PM


 Description  « Hide
The internal header <rw/_mutex.h> has become too big and hard to maintain. It would be an improvement to split it up into multiple headers, one for each supported implementation of threads, along the lines of what was done with the <rw/_config.h> header in http://svn.apache.org/viewvc?view=rev&revision=382600. This is too big to do for 4.2 but simple enough that it could go in 4.2.1.

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Martin Sebor added a comment - 01/Nov/07 12:09 AM
Now that 4.2.0 is released, set Affects Version(s) accordingly.

Martin Sebor made changes - 01/Nov/07 12:09 AM
Field Original Value New Value
Affects Version/s trunk [ 12312676 ]
Affects Version/s 4.2 [ 12311945 ]
Martin Sebor added a comment - 28/Nov/07 05:55 AM
A few things to consider:

1. The long term goal should be to eliminate the dependency of our headers on any particular implementation of the thread library and abstract everything under a common (stdcxx-only) interface.

2. Another long term goal should be to eliminate the binary incompatibility between reentrant (thread-safe) and ordinary builds.

3. In the meantime, does it make sense to introduce platform-specific subdirectories into the include directory (along the same lines as what we have under src/) or should we follow the _config.h approach taken in rev 382600 (i.e., append a suffix to the basename of the _mutex.h header)?


Martin Sebor added a comment - 05/Feb/08 10:46 PM

Martin Sebor made changes - 14/Mar/08 04:29 AM
Assignee Farid Zaripov [ farid ]
Martin Sebor added a comment - 18/Mar/08 05:56 PM
Added an initial guesstimate and set Severity to Cosmetic.

Martin Sebor made changes - 18/Mar/08 05:56 PM
Severity Cosmetic
Remaining Estimate 4h [ 14400 ]
Original Estimate 4h [ 14400 ]
Farid Zaripov made changes - 19/Mar/08 02:16 PM
Status Open [ 1 ] In Progress [ 3 ]
Farid Zaripov added a comment - 19/Mar/08 04:20 PM
The patch is attached.

Farid Zaripov made changes - 19/Mar/08 04:20 PM
Attachment stdcxx-563.patch [ 12378251 ]
Farid Zaripov made changes - 24/Mar/08 05:27 PM
Attachment stdcxx-563.patch [ 12378251 ]
Farid Zaripov made changes - 24/Mar/08 05:41 PM
Attachment stdcxx-563.patch [ 12378495 ]
Farid Zaripov made changes - 24/Mar/08 05:41 PM
Patch Info [Patch Available]
Farid Zaripov made changes - 24/Mar/08 05:41 PM
Status In Progress [ 3 ] Open [ 1 ]
Martin Sebor added a comment - 27/Mar/08 04:13 PM
Here are some observations and suggestions regarding the patch:
  1. Underscores separating components of file names should be replaced with dashes for consistency with the rw/_config-*.h headers.
  2. There's a typo in the name of _atomic_aplha.h. I suspect the name should be changed to _atomic-deccxx.h since the primitives seem specific to the compiler, not to the hardware architecture.
  3. What is _atomic_generic.h for and shouldn't it be merged with _atomic.h?
  4. What compilers is _atomic_ia64_x64.h used by? If all of them on IA64 as well as x86_64 (in LLP64), maybe it should be called _atomic-x64.h. I see a lof of #ifdefs for MSVC. Would it make sense to split it up into _atomic-msvc.h and whatever else?
  5. I believe _atomic_mips.h is specific to the MIPSpro compiler and couldn't be used with gcc on the MIPS architecture. It should be renamed to _atomic_mipspro.h
  6. I'm not quite sure what to do with _atomic_mutex.h. Ideally, we would have atomic operations everywhere. If there is a platform where we (sometimes) need to use the mutex version (I think you mentioned PA-RISC) I guess we need to keep it but it doesn't make me very happy...
  7. If _atomic_powerpc.h is specific to IBM XLC++ (and can't be used by gcc) it should be renamed to _atomic-xlc.h.
  8. One of _atomic-x86.h and the src/i86 directory should be renamed for consistency. It seems that the commonly used abbreviation used for the Intel 8086-derived processors (e.g., 80386, 80486) is x86 – see the Wikipedia article.
  9. Would _mutex-win32.h be a better name than _mutex-windows.h?

Finally, I wonder if instead of adding suffixes to these files and worry about being consistent every time we add a new one it would make sense to add platform-specific directories under include/rw/ instead and move the corresponding files (as well as the rw/_config-*.h headers) there. Thoughts?


Martin Sebor added a comment - 23/Apr/08 05:29 AM
Deferred until 4.2.2.

Martin Sebor made changes - 23/Apr/08 05:29 AM
Fix Version/s 4.2.1 [ 12312690 ]
Fix Version/s 4.2.2 [ 12313096 ]
Martin Sebor added a comment - 05/May/08 05:26 PM
This would be nice to have but it's not essential. Lowered Priority to Minor.

Martin Sebor made changes - 05/May/08 05:26 PM
Priority Major [ 3 ] Minor [ 4 ]
Farid Zaripov made changes - 15/May/08 03:14 PM
Attachment stdcxx-563.patch [ 12378495 ]
Farid Zaripov added a comment - 15/May/08 03:14 PM - edited
New patch attached.

ChangeLog:

	STDCXX-563
	* include/rw/_atomic-deccxx.h: New header file with definitions of inline
	functions for atomic operations on ALPHA platform.
	* include/rw/_atomic-mipspro.h: New header file with definitions of inline functions
	for atomic operations on MIPS platform.
	* include/rw/_atomic-mutex.h: New header file with definitions of inline functions
	for atomic operations with using mutex object.
	* include/rw/_atomic-parisc.h: New header file with definitions of inline functions
	for atomic operations on PA RISC platform.
	* include/rw/_atomic-sparc.h: New header file with definitions of inline functions
	for atomic operations on SPARC platform.
	* include/rw/_atomic-x64.h: New header file with definitions of inline
	functions for atomic operations on Intel IA64 and X64 platforms.
	* include/rw/_atomic-x86.h: New header file with definitions of inline functions for
	atomic operations on Intel X86 platform.
	* include/rw/_atomic-xlc.h: New header file with definitions of inline functions
	for atomic operations on POWERPC platform.
	* include/rw/_atomic.h: New header file with definitions of inline functions
	for atomic operations.
	* include/rw/_mutex-dce.h: New header file with definitions of classes for thread
	safety using DCE threads.
	* include/rw/_mutex-os2.h: New header file with definitions of classes for thread
	safety using OS2 threads.
	* include/rw/_mutex-pthread.h: New header file with definitions of classes for thread
	safety using POSIX threads.
	* include/rw/_mutex-solaris.h: New header file with definitions of classes for thread
	safety using Solaris threads.
	* include/rw/_mutex-win32.h: New header file with definitions of classes for thread
	safety using Windows threads.
	* include/rw/_mutex.h: Split content of the file to the set of platform specific and OS
	specific headers above.
	(__rw_get_static_mutex) [!_RWSTD_NO_ATOMIC_OPS && !_PA_RISC2_0]: Use
	_RWSTD_ATOMIC_PREINCREMENT() on all platforms where atomic increment is
	available instead of using _InterlockedIncrement() only on Windows.

Farid Zaripov made changes - 15/May/08 03:14 PM
Attachment stdcxx-563.patch [ 12382117 ]
Farid Zaripov made changes - 15/May/08 03:21 PM
Comment [ The updated patch is attached.

{noformat}
  ChangeLog:
  STDCXX-563
  * include/rw/_atomic.h: New header file with definitions of inline functions
  for atomic operations.
  * include/rw/_atomic_aplha.h: New header file with definitions of inline
  functions for atomic operations on ALPHA platform.
  * include/rw/_atomic_generic.h: New header file with definitions of generic
  inline functions for atomic operations with long and long long types.
  * include/rw/_atomic_ia64_x64.h: New header file with definitions of inline
  functions for atomic operations on Intel IA64 and X64 platforms.
  * include/rw/_atomic_mips.h: New header file with definitions of inline functions
  for atomic operations on MIPS platform.
  * include/rw/_atomic_mutex.h: New header file with definitions of inline functions
  for atomic operations with using mutex object.
  * include/rw/_atomic_parisc.h: New header file with definitions of inline functions
  for atomic operations on PA RISC platform.
  * include/rw/_atomic_powerpc.h: New header file with definitions of inline functions
  for atomic operations on POWERPC platform.
  * include/rw/_atomic_sparc.h: New header file with definitions of inline functions
  for atomic operations on SPARC platform.
  * include/rw/_atomic_x86.h: New header file with definitions of inline functions for
  atomic operations on Intel X86 platform.
  * include/rw/_mutex_dce.h: New header file with definitions of classes for thread
  safety using DCE threads.
  * include/rw/_mutex_os2.h: New header file with definitions of classes for thread
  safety using OS2 threads.
  * include/rw/_mutex_pthread.h: New header file with definitions of classes for thread
  safety using POSIX threads.
  * include/rw/_mutex_solaris.h: New header file with definitions of classes for thread
  safety using Solaris threads.
  * include/rw/_mutex_windows.h: New header file with definitions of classes for thread
  safety using Windows threads.
  * include/rw/_mutex.h: Split content of the file to the set of platform specific and OS
  specific headers above.
  (__rw_get_static_mutex) [!_RWSTD_NO_ATOMIC_OPS && !_PA_RISC2_0]: Declare
  __cntr as int instead of volatile long (see STDCXX-792), use
  _RWSTD_ATOMIC_PREINCREMENT() on all platforms where atomic increment is
  available instead of using InterlockedIncrement() only on Windows.
{noformat}
]
Farid Zaripov logged work - 15/May/08 03:22 PM
Time Worked: 4h
Patch created and tested on 32-bit and 64-bit MSVC and gcc/Linux.
Farid Zaripov made changes - 15/May/08 03:23 PM
Remaining Estimate 4h [ 14400 ] 0h [ 0 ]
Time Spent 4h [ 14400 ]
Farid Zaripov made changes - 15/May/08 03:32 PM
Attachment stdcxx-563.patch [ 12382117 ]
Farid Zaripov made changes - 15/May/08 03:33 PM
Attachment stdcxx-563.patch [ 12382120 ]
Farid Zaripov made changes - 15/May/08 03:36 PM
Assignee Farid Zaripov [ farid ]
Repository Revision Date User Message
ASF #696295 Wed Sep 17 13:48:18 UTC 2008 faridz 2008-09-17 Farid Zaripov <faridz@apache.org>

STDCXX-563
* include/rw/_atomic-deccxx.h: New header file with definitions of
inline functions for atomic operations on ALPHA platform.
* include/rw/_atomic-mipspro.h: New header file with definitions of
inline functions for atomic operations on MIPS platform.
* include/rw/_atomic-mutex.h: New header file with definitions of
inline functions for atomic operations with using mutex object.
* include/rw/_atomic-parisc.h: New header file with definitions of
inline functions for atomic operations on PA RISC platform.
* include/rw/_atomic-sparc.h: New header file with definitions of
inline functions for atomic operations on SPARC platform.
* include/rw/_atomic-x64.h: New header file with definitions of inline
functions for atomic operations on Intel IA64 and x64 platforms.
* include/rw/_atomic-x86.h: New header file with definitions of inline
functions for atomic operations on Intel x86 platform.
* include/rw/_atomic-xlc.h: New header file with definitions of inline
functions for atomic operations on POWERPC platform.
* include/rw/_atomic.h: New header file with definitions of inline
functions for atomic operations.
* include/rw/_mutex-dce.h: New header file with definitions of classes
for thread safety using DCE threads.
* include/rw/_mutex-os2.h: New header file with definitions of classes
for thread safety using OS2 threads.
* include/rw/_mutex-pthread.h: New header file with definitions of
classes for thread safety using POSIX threads.
* include/rw/_mutex-solaris.h: New header file with definitions of
classes for thread safety using Solaris threads.
* include/rw/_mutex-win32.h: New header file with definitions of
classes for thread safety using Windows threads.
* include/rw/_mutex.h: Split content of the file to the set of
platform specific and OS specific headers above.
(__rw_get_static_mutex) [!_RWSTD_NO_ATOMIC_OPS && !_PA_RISC2_0]: Use
_RWSTD_ATOMIC_PREINCREMENT() on all platforms where atomic increment is
available instead of using _InterlockedIncrement() only on Windows.
* src/i86: Directory renamed to src/x86 for consistency.
* src/i86_64: Directory renamed to src/x86_64 for consistency.
* src/atomic.asm: Renamed i86 to x86 and i86_64 to x86_64 respectively.
* src/atomic.s: Ditto.
* src/x86/atomic.inc: Ditto.
* src/x86/atomic.s: Ditto.
* src/x86_64/atomic.inc: Ditto.
* src/x86_64/atomic.s: Ditto.
Files Changed
MODIFY /stdcxx/branches/4.2.x/src/x86/atomic.s
MODIFY /stdcxx/branches/4.2.x/src/x86_64/atomic.s
MODIFY /stdcxx/branches/4.2.x/src/atomic.s
ADD /stdcxx/branches/4.2.x/include/rw/_mutex-dce.h
MODIFY /stdcxx/branches/4.2.x/src/x86/atomic.inc
ADD /stdcxx/branches/4.2.x/include/rw/_atomic-parisc.h
MODIFY /stdcxx/branches/4.2.x/src/x86_64/atomic.inc
DEL /stdcxx/branches/4.2.x/src/i86_64
ADD /stdcxx/branches/4.2.x/include/rw/_atomic.h
ADD /stdcxx/branches/4.2.x/include/rw/_atomic-mipspro.h
ADD /stdcxx/branches/4.2.x/include/rw/_atomic-xlc.h
ADD /stdcxx/branches/4.2.x/include/rw/_mutex-solaris.h
MODIFY /stdcxx/branches/4.2.x/src/atomic.asm
DEL /stdcxx/branches/4.2.x/src/i86
MODIFY /stdcxx/branches/4.2.x/include/rw/_mutex.h
ADD /stdcxx/branches/4.2.x/include/rw/_mutex-os2.h
ADD /stdcxx/branches/4.2.x/include/rw/_atomic-deccxx.h
ADD /stdcxx/branches/4.2.x/include/rw/_atomic-sparc.h
ADD /stdcxx/branches/4.2.x/include/rw/_atomic-x64.h
ADD /stdcxx/branches/4.2.x/include/rw/_atomic-x86.h
ADD /stdcxx/branches/4.2.x/src/x86_64 (from /stdcxx/branches/4.2.x/src/i86_64)
ADD /stdcxx/branches/4.2.x/include/rw/_mutex-pthread.h
ADD /stdcxx/branches/4.2.x/include/rw/_mutex-win32.h
ADD /stdcxx/branches/4.2.x/include/rw/_atomic-mutex.h
ADD /stdcxx/branches/4.2.x/src/x86 (from /stdcxx/branches/4.2.x/src/i86)

Farid Zaripov added a comment - 17/Sep/08 01:50 PM

Farid Zaripov made changes - 17/Sep/08 01:50 PM
Assignee Farid Zaripov [ farid ]
Resolution Fixed [ 1 ]
Status Open [ 1 ] Resolved [ 5 ]
Repository Revision Date User Message
ASF #704152 Mon Oct 13 16:25:34 UTC 2008 faridz 2008-10-13 Farid Zaripov <faridz@apache.org>

Merged revs 696275, 696295, 697875, 697883, 700495, 700810, 700888,
701135, 702179, 702195, 702931, 703124, 703216 from 4.2.x branch.


2008-09-17 Farid Zaripov <faridz@apache.org>
* src/random.cpp: #included <stddef.h> for size_t type.


2008-09-17 Farid Zaripov <faridz@apache.org>
STDCXX-563
* include/rw/_atomic-deccxx.h: New header file with definitions of
inline functions for atomic operations on ALPHA platform.
* include/rw/_atomic-mipspro.h: New header file with definitions of
inline functions for atomic operations on MIPS platform.
* include/rw/_atomic-mutex.h: New header file with definitions of
inline functions for atomic operations with using mutex object.
* include/rw/_atomic-parisc.h: New header file with definitions of
inline functions for atomic operations on PA RISC platform.
* include/rw/_atomic-sparc.h: New header file with definitions of
inline functions for atomic operations on SPARC platform.
* include/rw/_atomic-x64.h: New header file with definitions of inline
functions for atomic operations on Intel IA64 and x64 platforms.
* include/rw/_atomic-x86.h: New header file with definitions of inline
functions for atomic operations on Intel x86 platform.
* include/rw/_atomic-xlc.h: New header file with definitions of inline
functions for atomic operations on POWERPC platform.
* include/rw/_atomic.h: New header file with definitions of inline
functions for atomic operations.
* include/rw/_mutex-dce.h: New header file with definitions of classes
for thread safety using DCE threads.
* include/rw/_mutex-os2.h: New header file with definitions of classes
for thread safety using OS2 threads.
* include/rw/_mutex-pthread.h: New header file with definitions of
classes for thread safety using POSIX threads.
* include/rw/_mutex-solaris.h: New header file with definitions of
classes for thread safety using Solaris threads.
* include/rw/_mutex-win32.h: New header file with definitions of
classes for thread safety using Windows threads.
* include/rw/_mutex.h: Split content of the file to the set of
platform specific and OS specific headers above.
(__rw_get_static_mutex) [!_RWSTD_NO_ATOMIC_OPS && !_PA_RISC2_0]: Use
_RWSTD_ATOMIC_PREINCREMENT() on all platforms where atomic increment is
available instead of using _InterlockedIncrement() only on Windows.
* src/i86: Directory renamed to src/x86 for consistency.
* src/i86_64: Directory renamed to src/x86_64 for consistency.
* src/atomic.asm: Renamed i86 to x86 and i86_64 to x86_64 respectively.
* src/atomic.s: Ditto.
* src/x86/atomic.inc: Ditto.
* src/x86/atomic.s: Ditto.
* src/x86_64/atomic.inc: Ditto.
* src/x86_64/atomic.s: Ditto.


2008-09-22 Farid Zaripov <faridz@apache.org>
STDCXX-455
* util/ctype.cpp (process_ctype): Don't create symlink on Cygwin.
(write_ctype): Same.
* util/localedef.cpp (create_locale): Same.
* util/path.cpp (create_symlink): Don't define function on Cygwin.


2008-09-22 Farid Zaripov <faridz@apache.org>
* tests/containers/23.list.erase.cpp (test_erase): Simplify type of the pres_iter.


2008-09-30 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic-x86.h [!_MSC_VER && _RWSTD_INTERLOCKED_T]:
Moved closing brace of the extern "C" block to the proper location.


2008-10-01 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic-deccxx.h: Correct $Id: line.
* include/rw/_atomic-mipspro.h: Same.
* include/rw/_atomic-mutex.h: Same.
* include/rw/_atomic-parisc.h: Same.
* include/rw/_atomic-sparc.h: Same.
* include/rw/_atomic-x64.h: Same.
* include/rw/_atomic-x86.h: Same.
* include/rw/_atomic-xlc.h: Same.
* include/rw/_atomic.h: Same.
* include/rw/_mutex-dce.h: Same.
* include/rw/_mutex-os2.h: Same.
* include/rw/_mutex-pthread.h: Same.
* include/rw/_mutex-solaris.h: Same.
* include/rw/_mutex-win32.h: Same.
* tests/include/rw_containers.h: Same.
* tests/include/rw_lists.h: Same.
* tests/src/23.containers.cpp: Same.


2008-10-01 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic-mutex.h: Make _RWSTD_RW_MUTEX_H_INCLUDED
after #endif directive as comment to fix compile error.


2008-10-02 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic-sync.h: New header file with definitions
of inline functions for atomic operations using __sync_xxx()
built-in functions set.
* include/rw/_atomic.h: #include <rw/_atomic-sync.h> with
gcc >= 4.1 on x86, x86_64, ia64 platforms and icc on ia64 platform.


2008-10-06 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic-deccxx.h: #define corresponding
_RWSTD_NO_XXX_ATOMIC_OPS macros for types, which are
not supported in atomic operations.
* include/rw/_atomic-mipspro.h: Ditto.
* include/rw/_atomic-parisc.h: Ditto.
* include/rw/_atomic-sparc.h: Ditto.
* include/rw/_atomic-x86.h: Ditto.
* include/rw/_atomic-xlc.h: Ditto.
* include/rw/_atomic-x64.h: Ditto. Arrange 64-bit atomic
functions into single #if/#endif block.
* include/rw/_atomic-sync.h: Same.
* include/rw/_atomic.h: Define generic bool, long and
long long atomic functions only if the corresponding
char/short/int/long atomic functions are defined.
* include/rw/_mutex.h: Cleanup _RWSTD_NO_XXX_ATOMIC_OPS macros.
(__rw_get_static_mutex): Check for presence of the int atomic
operations instead of checking the PA RISC platform.


2008-10-06 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic.h: Check for __GNUG__ instead of __GNUC__ for consistency.
Correct preprocessor condition for ICC on __i386__ and __x86_64 platforms.


2008-10-08 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic-sparc.h: Declare __rw_atomic_xxx64() functions
only if atomic-sparc64.s file will be #included in atomic.s
(use the same conditions as in the atomic.s file).
* include/rw/_atomic.h: Use __sync_xxx() builtins on x86 platform
on processors >= i486 only.


2008-10-09 Farid Zaripov <faridz@apache.org>
* src/locale_body.h: Replace __CYGWIN32__ to __CYGWIN__ for consistency.
* util/ctype.cpp: Ditto.
* util/localedef.cpp: Ditto.


2008-10-09 Farid Zaripov <faridz@apache.org>
        * src/locale_body.h: Revert changes, accidentally committed in r703124.
        * util/path.cpp: Replace __CYGWIN32__ to __CYGWIN__ for consistency.
Files Changed
ADD /stdcxx/branches/4.3.x/include/rw/_mutex-win32.h (from /stdcxx/branches/4.2.x/include/rw/_mutex-win32.h)
ADD /stdcxx/branches/4.3.x/src/x86 (from /stdcxx/branches/4.2.x/src/x86)
REPLACE /stdcxx/branches/4.3.x/src/x86/atomic.inc (from /stdcxx/branches/4.2.x/src/x86/atomic.inc)
ADD /stdcxx/branches/4.3.x/include/rw/_mutex-dce.h (from /stdcxx/branches/4.2.x/include/rw/_mutex-dce.h)
DEL /stdcxx/branches/4.3.x/src/i86_64
ADD /stdcxx/branches/4.3.x/include/rw/_atomic-mipspro.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-mipspro.h)
REPLACE /stdcxx/branches/4.3.x/src/x86_64/atomic.inc (from /stdcxx/branches/4.2.x/src/x86_64/atomic.inc)
ADD /stdcxx/branches/4.3.x/include/rw/_atomic-xlc.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-xlc.h)
ADD /stdcxx/branches/4.3.x/include/rw/_atomic-sync.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-sync.h)
MODIFY /stdcxx/branches/4.3.x/include/rw/_mutex.h
ADD /stdcxx/branches/4.3.x/include/rw/_mutex-os2.h (from /stdcxx/branches/4.2.x/include/rw/_mutex-os2.h)
ADD /stdcxx/branches/4.3.x/include/rw/_atomic-x64.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-x64.h)
ADD /stdcxx/branches/4.3.x/include/rw/_atomic-x86.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-x86.h)
ADD /stdcxx/branches/4.3.x/include/rw/_atomic-deccxx.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-deccxx.h)
ADD /stdcxx/branches/4.3.x/src/x86_64 (from /stdcxx/branches/4.2.x/src/x86_64)
ADD /stdcxx/branches/4.3.x/include/rw/_atomic-mutex.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-mutex.h)
REPLACE /stdcxx/branches/4.3.x/src/x86/atomic.s (from /stdcxx/branches/4.2.x/src/x86/atomic.s)
REPLACE /stdcxx/branches/4.3.x/src/x86_64/atomic.s (from /stdcxx/branches/4.2.x/src/x86_64/atomic.s)
MODIFY /stdcxx/branches/4.3.x/tests/include/rw_containers.h
MODIFY /stdcxx/branches/4.3.x/src/atomic.s
ADD /stdcxx/branches/4.3.x/include/rw/_atomic.h (from /stdcxx/branches/4.2.x/include/rw/_atomic.h)
ADD /stdcxx/branches/4.3.x/include/rw/_atomic-parisc.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-parisc.h)
MODIFY /stdcxx/branches/4.3.x/src/random.cpp
MODIFY /stdcxx/branches/4.3.x/src/atomic.asm
MODIFY /stdcxx/branches/4.3.x/tests/src/23.containers.cpp
ADD /stdcxx/branches/4.3.x/include/rw/_mutex-solaris.h (from /stdcxx/branches/4.2.x/include/rw/_mutex-solaris.h)
MODIFY /stdcxx/branches/4.3.x/util/ctype.cpp
DEL /stdcxx/branches/4.3.x/src/i86
ADD /stdcxx/branches/4.3.x/include/rw/_atomic-sparc.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-sparc.h)
MODIFY /stdcxx/branches/4.3.x/tests/containers/23.list.erase.cpp
MODIFY /stdcxx/branches/4.3.x/tests/include/rw_lists.h
MODIFY /stdcxx/branches/4.3.x/util/path.cpp
MODIFY /stdcxx/branches/4.3.x/util/localedef.cpp
ADD /stdcxx/branches/4.3.x/include/rw/_mutex-pthread.h (from /stdcxx/branches/4.2.x/include/rw/_mutex-pthread.h)

Repository Revision Date User Message
ASF #704153 Mon Oct 13 16:25:37 UTC 2008 faridz 2008-10-13 Farid Zaripov <faridz@apache.org>

Merged revs 696275, 696295, 697875, 697883, 700495, 700810, 700888,
701135, 702179, 702195, 702931, 703124, 703216 from 4.2.x branch.


2008-09-17 Farid Zaripov <faridz@apache.org>
* src/random.cpp: #included <stddef.h> for size_t type.


2008-09-17 Farid Zaripov <faridz@apache.org>
STDCXX-563
* include/rw/_atomic-deccxx.h: New header file with definitions of
inline functions for atomic operations on ALPHA platform.
* include/rw/_atomic-mipspro.h: New header file with definitions of
inline functions for atomic operations on MIPS platform.
* include/rw/_atomic-mutex.h: New header file with definitions of
inline functions for atomic operations with using mutex object.
* include/rw/_atomic-parisc.h: New header file with definitions of
inline functions for atomic operations on PA RISC platform.
* include/rw/_atomic-sparc.h: New header file with definitions of
inline functions for atomic operations on SPARC platform.
* include/rw/_atomic-x64.h: New header file with definitions of inline
functions for atomic operations on Intel IA64 and x64 platforms.
* include/rw/_atomic-x86.h: New header file with definitions of inline
functions for atomic operations on Intel x86 platform.
* include/rw/_atomic-xlc.h: New header file with definitions of inline
functions for atomic operations on POWERPC platform.
* include/rw/_atomic.h: New header file with definitions of inline
functions for atomic operations.
* include/rw/_mutex-dce.h: New header file with definitions of classes
for thread safety using DCE threads.
* include/rw/_mutex-os2.h: New header file with definitions of classes
for thread safety using OS2 threads.
* include/rw/_mutex-pthread.h: New header file with definitions of
classes for thread safety using POSIX threads.
* include/rw/_mutex-solaris.h: New header file with definitions of
classes for thread safety using Solaris threads.
* include/rw/_mutex-win32.h: New header file with definitions of
classes for thread safety using Windows threads.
* include/rw/_mutex.h: Split content of the file to the set of
platform specific and OS specific headers above.
(__rw_get_static_mutex) [!_RWSTD_NO_ATOMIC_OPS && !_PA_RISC2_0]: Use
_RWSTD_ATOMIC_PREINCREMENT() on all platforms where atomic increment is
available instead of using _InterlockedIncrement() only on Windows.
* src/i86: Directory renamed to src/x86 for consistency.
* src/i86_64: Directory renamed to src/x86_64 for consistency.
* src/atomic.asm: Renamed i86 to x86 and i86_64 to x86_64 respectively.
* src/atomic.s: Ditto.
* src/x86/atomic.inc: Ditto.
* src/x86/atomic.s: Ditto.
* src/x86_64/atomic.inc: Ditto.
* src/x86_64/atomic.s: Ditto.


2008-09-22 Farid Zaripov <faridz@apache.org>
STDCXX-455
* util/ctype.cpp (process_ctype): Don't create symlink on Cygwin.
(write_ctype): Same.
* util/localedef.cpp (create_locale): Same.
* util/path.cpp (create_symlink): Don't define function on Cygwin.


2008-09-22 Farid Zaripov <faridz@apache.org>
* tests/containers/23.list.erase.cpp (test_erase): Simplify type of the pres_iter.


2008-09-30 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic-x86.h [!_MSC_VER && _RWSTD_INTERLOCKED_T]:
Moved closing brace of the extern "C" block to the proper location.


2008-10-01 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic-deccxx.h: Correct $Id: line.
* include/rw/_atomic-mipspro.h: Same.
* include/rw/_atomic-mutex.h: Same.
* include/rw/_atomic-parisc.h: Same.
* include/rw/_atomic-sparc.h: Same.
* include/rw/_atomic-x64.h: Same.
* include/rw/_atomic-x86.h: Same.
* include/rw/_atomic-xlc.h: Same.
* include/rw/_atomic.h: Same.
* include/rw/_mutex-dce.h: Same.
* include/rw/_mutex-os2.h: Same.
* include/rw/_mutex-pthread.h: Same.
* include/rw/_mutex-solaris.h: Same.
* include/rw/_mutex-win32.h: Same.
* tests/include/rw_containers.h: Same.
* tests/include/rw_lists.h: Same.
* tests/src/23.containers.cpp: Same.


2008-10-01 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic-mutex.h: Make _RWSTD_RW_MUTEX_H_INCLUDED
after #endif directive as comment to fix compile error.


2008-10-02 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic-sync.h: New header file with definitions
of inline functions for atomic operations using __sync_xxx()
built-in functions set.
* include/rw/_atomic.h: #include <rw/_atomic-sync.h> with
gcc >= 4.1 on x86, x86_64, ia64 platforms and icc on ia64 platform.


2008-10-06 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic-deccxx.h: #define corresponding
_RWSTD_NO_XXX_ATOMIC_OPS macros for types, which are
not supported in atomic operations.
* include/rw/_atomic-mipspro.h: Ditto.
* include/rw/_atomic-parisc.h: Ditto.
* include/rw/_atomic-sparc.h: Ditto.
* include/rw/_atomic-x86.h: Ditto.
* include/rw/_atomic-xlc.h: Ditto.
* include/rw/_atomic-x64.h: Ditto. Arrange 64-bit atomic
functions into single #if/#endif block.
* include/rw/_atomic-sync.h: Same.
* include/rw/_atomic.h: Define generic bool, long and
long long atomic functions only if the corresponding
char/short/int/long atomic functions are defined.
* include/rw/_mutex.h: Cleanup _RWSTD_NO_XXX_ATOMIC_OPS macros.
(__rw_get_static_mutex): Check for presence of the int atomic
operations instead of checking the PA RISC platform.


2008-10-06 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic.h: Check for __GNUG__ instead of __GNUC__ for consistency.
Correct preprocessor condition for ICC on __i386__ and __x86_64 platforms.


2008-10-08 Farid Zaripov <faridz@apache.org>
* include/rw/_atomic-sparc.h: Declare __rw_atomic_xxx64() functions
only if atomic-sparc64.s file will be #included in atomic.s
(use the same conditions as in the atomic.s file).
* include/rw/_atomic.h: Use __sync_xxx() builtins on x86 platform
on processors >= i486 only.


2008-10-09 Farid Zaripov <faridz@apache.org>
* src/locale_body.h: Replace __CYGWIN32__ to __CYGWIN__ for consistency.
* util/ctype.cpp: Ditto.
* util/localedef.cpp: Ditto.


2008-10-09 Farid Zaripov <faridz@apache.org>
        * src/locale_body.h: Revert changes, accidentally committed in r703124.
        * util/path.cpp: Replace __CYGWIN32__ to __CYGWIN__ for consistency.
Files Changed
MODIFY /stdcxx/trunk/util/ctype.cpp
ADD /stdcxx/trunk/include/rw/_atomic-sync.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-sync.h)
MODIFY /stdcxx/trunk/include/rw/_mutex.h
ADD /stdcxx/trunk/include/rw/_mutex-os2.h (from /stdcxx/branches/4.2.x/include/rw/_mutex-os2.h)
ADD /stdcxx/trunk/include/rw/_atomic-sparc.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-sparc.h)
MODIFY /stdcxx/trunk/tests/containers/23.list.erase.cpp
MODIFY /stdcxx/trunk/tests/include/rw_lists.h
ADD /stdcxx/trunk/include/rw/_atomic-deccxx.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-deccxx.h)
MODIFY /stdcxx/trunk/util/localedef.cpp
REPLACE /stdcxx/trunk/src/x86_64/atomic.s (from /stdcxx/branches/4.2.x/src/x86_64/atomic.s)
MODIFY /stdcxx/trunk/tests/include/rw_containers.h
REPLACE /stdcxx/trunk/src/x86/atomic.inc (from /stdcxx/branches/4.2.x/src/x86/atomic.inc)
DEL /stdcxx/trunk/src/i86_64
ADD /stdcxx/trunk/include/rw/_atomic-parisc.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-parisc.h)
ADD /stdcxx/trunk/include/rw/_atomic-mipspro.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-mipspro.h)
ADD /stdcxx/trunk/include/rw/_atomic-xlc.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-xlc.h)
MODIFY /stdcxx/trunk/tests/src/23.containers.cpp
ADD /stdcxx/trunk/include/rw/_mutex-solaris.h (from /stdcxx/branches/4.2.x/include/rw/_mutex-solaris.h)
DEL /stdcxx/trunk/src/i86
ADD /stdcxx/trunk/include/rw/_atomic-x64.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-x64.h)
ADD /stdcxx/trunk/include/rw/_atomic-x86.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-x86.h)
MODIFY /stdcxx/trunk/util/path.cpp
ADD /stdcxx/trunk/src/x86_64 (from /stdcxx/branches/4.2.x/src/x86_64)
ADD /stdcxx/trunk/include/rw/_atomic-mutex.h (from /stdcxx/branches/4.2.x/include/rw/_atomic-mutex.h)
ADD /stdcxx/trunk/include/rw/_mutex-pthread.h (from /stdcxx/branches/4.2.x/include/rw/_mutex-pthread.h)
REPLACE /stdcxx/trunk/src/x86/atomic.s (from /stdcxx/branches/4.2.x/src/x86/atomic.s)
ADD /stdcxx/trunk/include/rw/_mutex-win32.h (from /stdcxx/branches/4.2.x/include/rw/_mutex-win32.h)
ADD /stdcxx/trunk/src/x86 (from /stdcxx/branches/4.2.x/src/x86)
MODIFY /stdcxx/trunk/src/atomic.s
ADD /stdcxx/trunk/include/rw/_mutex-dce.h (from /stdcxx/branches/4.2.x/include/rw/_mutex-dce.h)
ADD /stdcxx/trunk/include/rw/_atomic.h (from /stdcxx/branches/4.2.x/include/rw/_atomic.h)
REPLACE /stdcxx/trunk/src/x86_64/atomic.inc (from /stdcxx/branches/4.2.x/src/x86_64/atomic.inc)
MODIFY /stdcxx/trunk/src/atomic.asm
MODIFY /stdcxx/trunk/src/random.cpp