mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-05 00:30:15 +08:00
ca566e4c07
2003-06-13 Nathan C. Myers <ncm-nospam@cantrip.org> Avoid multi-processor bus contention on increment/decrement-and- test of the reference count in the empty-string object, by comparing addresses first, and never touching the reference count of the empty- string object. * include/bits/basic_string.h: (_S_empty_rep_storage): Move into basic_string<>::_Rep for use by its members. (_Rep::_S_empty_rep()): New accessor. (_Rep::_M_length, _Rep::_M_capacity, _Rep::_M_references): Move to a base class _Rep_base. (_Rep::_M_dispose, _Rep::_M_refcopy): Check for the empty string. (basic_string()): Change to use _M_refdata() in place of _M_refcopy(), since no longer must increment its refcount. * include/bits/basic_string.tcc: (_Rep::_M_destroy, _M_leak_hard): Check for the empty string and return immediately. The former might be unnecessary. The latter prevents begin() and end() from cloning it unnecessarily. (_S_construct(_InIterator, _InIterator, const _Alloc&, input_iterator_tag), _S_construct(_InIterator, _InIterator, const _Alloc&, forward_iterator_tag), _S_construct(size_type, _CharT, const _Alloc&)): Change to use _M_refdata() in place of _M_refcopy(). (_M_mutate): Check for the empty string and treat it as shared. This is necessary here because _M_mutate is sometimes called with all-zero arguments; in all other uses of _M_is_shared, the test comes out right anyhow. From-SVN: r67912 |
||
---|---|---|
boehm-gc | ||
config | ||
contrib | ||
fastjar | ||
gcc | ||
include | ||
INSTALL | ||
libf2c | ||
libffi | ||
libiberty | ||
libjava | ||
libobjc | ||
libstdc++-v3 | ||
maintainer-scripts | ||
zlib | ||
.cvsignore | ||
ChangeLog | ||
config-ml.in | ||
config.guess | ||
config.if | ||
config.sub | ||
configure | ||
configure.in | ||
COPYING | ||
COPYING.LIB | ||
install-sh | ||
libtool.m4 | ||
ltcf-c.sh | ||
ltcf-cxx.sh | ||
ltcf-gcj.sh | ||
ltconfig | ||
ltmain.sh | ||
MAINTAINERS | ||
Makefile.def | ||
Makefile.in | ||
Makefile.tpl | ||
missing | ||
mkdep | ||
mkinstalldirs | ||
move-if-change | ||
README | ||
symlink-tree | ||
ylwrap |
This directory contains the GNU Compiler Collection (GCC). The GNU Compiler Collection is free software. See the file COPYING for copying permission. The manuals, and some of the runtime libraries, are under different terms; see the individual source files for details. The directory INSTALL contains copies of the installation information as HTML and plain text. The source of this information is gcc/doc/install.texi. The installation information includes details of what is included in the GCC sources and what files GCC installs. See the file gcc/doc/gcc.texi (together with other files that it includes) for usage and porting information. An online readable version of the manual is in the files gcc/doc/gcc.info*. See http://gcc.gnu.org/bugs.html for how to report bugs usefully.