[Libreoffice-commits] .: sal/inc sal/rtl sal/util tools/inc
sal/inc/rtl/ustrbuf.h | 28 + sal/inc/rtl/ustrbuf.hxx|7 ++ sal/rtl/source/strimp.hxx | 18 sal/rtl/source/string.cxx |5 sal/rtl/source/strtmpl.cxx |8 --- sal/rtl/source/uri.cxx |2 + sal/rtl/source/ustrbuf.cxx | 50 - sal/rtl/source/ustring.cxx | 15 - sal/util/sal.map |2 + tools/inc/tools/string.hxx |4 ++- 10 files changed, 89 insertions(+), 50 deletions(-) New commits: commit 1426d4432c59ef42f28642ec63e57517223eb32d Author: Michael Meeks michael.me...@suse.com Date: Fri Mar 30 18:27:58 2012 +0100 sal: expose more stringbuffer related instrumentation points Avoid ref/unref pair in makeStringAndClear, hook into the stringbuffer-like 'String' class to expose it's conversion to immutable strings, and fixup misc. missing instrumentation. diff --git a/sal/inc/rtl/ustrbuf.h b/sal/inc/rtl/ustrbuf.h index 0863da0..1051d0d 100644 --- a/sal/inc/rtl/ustrbuf.h +++ b/sal/inc/rtl/ustrbuf.h @@ -179,6 +179,34 @@ SAL_DLLPUBLIC void SAL_CALL rtl_uStringbuffer_remove( sal_Int32 start, sal_Int32 len ); +/** +Returns an immutable rtl_uString object, while clearing the string buffer. + +This method is primarily used to allow these completed +string allocation events to be traced. + +@param ppThis The string, on that the operation should take place +@param nCapacity pointer to the capacity of the string buffer + +@since LibreOffice 3.6 + */ +SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_uStringBuffer_makeStringAndClear( +/*inout*/ rtl_uString ** ppThis, +sal_Int32 *nCapacity ); + +/** +References and returns an immutable rtl_uString object, from a mutable +string-buffer object. + +This method is primarily used to allow legacy 'String' class +conversions to OUString to be accurately traced. + +@param pThis The string, on that the operation should take place + +@since LibreOffice 3.6 + */ +SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_uStringBuffer_refReturn( rtl_uString *pThis ); + #ifdef __cplusplus } #endif diff --git a/sal/inc/rtl/ustrbuf.hxx b/sal/inc/rtl/ustrbuf.hxx index 99afe44..02a507c 100644 --- a/sal/inc/rtl/ustrbuf.hxx +++ b/sal/inc/rtl/ustrbuf.hxx @@ -181,10 +181,9 @@ public: */ OUString makeStringAndClear() { -OUString aRet( pData ); -rtl_uString_new(pData); -nCapacity = 0; -return aRet; +return OUString( + rtl_uStringBuffer_makeStringAndClear( pData, nCapacity ), + SAL_NO_ACQUIRE ); } /** diff --git a/sal/rtl/source/strimp.hxx b/sal/rtl/source/strimp.hxx index a9e5a38..82f7f41 100644 --- a/sal/rtl/source/strimp.hxx +++ b/sal/rtl/source/strimp.hxx @@ -54,6 +54,24 @@ sal_Int16 rtl_ImplGetDigit( sal_Unicode ch, sal_Int16 nRadix ); sal_Bool rtl_ImplIsWhitespace( sal_Unicode c ); +// string lifetime instrumentation / diagnostics +#if 0 +# include rtl/ustring.hxx +# define RTL_LOG_STRING_NEW(s) \ + do { \ + fprintf (stderr, +%s\n, \ + rtl::OUStringToOString(s, RTL_TEXTENCODING_UTF8).getStr()); \ + } while (0) +# define RTL_LOG_STRING_DELETE(s) \ + do { \ + fprintf (stderr, -%s\n, \ + rtl::OUStringToOString(s, RTL_TEXTENCODING_UTF8).getStr()); \ + } while (0) +#else +# define RTL_LOG_STRING_NEW(s) +# define RTL_LOG_STRING_DELETE(s) +#endif + #endif /* INCLUDED_RTL_SOURCE_STRIMP_HXX */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sal/rtl/source/string.cxx b/sal/rtl/source/string.cxx index 9c5393f..42c8ae2 100644 --- a/sal/rtl/source/string.cxx +++ b/sal/rtl/source/string.cxx @@ -71,6 +71,11 @@ static rtl_String const aImplEmpty_rtl_String = #define IMPL_RTL_STRINGDATA rtl_String #define IMPL_RTL_EMPTYSTRINGaImplEmpty_rtl_String +#undef RTL_LOG_STRING_NEW +#define RTL_LOG_STRING_NEW(s) +#undef RTL_LOG_STRING_DELETE +#define RTL_LOG_STRING_DELETE(s) + /* === */ /* Include String/UString template code */ diff --git a/sal/rtl/source/strtmpl.cxx b/sal/rtl/source/strtmpl.cxx index 8e1de8b..2a33907 100644 --- a/sal/rtl/source/strtmpl.cxx +++ b/sal/rtl/source/strtmpl.cxx @@ -49,12 +49,6 @@ inline void rtl_str_ImplCopy( IMPL_RTL_STRCODE* pDest, } */ -// for instrumentation / diagnostics -#ifndef
[Libreoffice-commits] .: sal/inc sal/rtl
sal/inc/internal/once.h | 82 sal/rtl/source/alloc_arena.cxx |1 sal/rtl/source/alloc_cache.cxx |1 sal/rtl/source/alloc_global.cxx |1 sal/rtl/source/locale.cxx |1 5 files changed, 86 deletions(-) New commits: commit cbcf00ad04e8e1457f5563a25b6f9cf68e3f4a24 Author: Stephan Bergmann sberg...@redhat.com Date: Wed Nov 30 09:10:17 2011 +0100 Removed unused sal/inc/internal/once.h. diff --git a/sal/inc/internal/once.h b/sal/inc/internal/once.h deleted file mode 100644 index 45f9c37..000 --- a/sal/inc/internal/once.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * http://www.openoffice.org/license.html - * for a copy of the LGPLv3 License. - * - / - -#ifndef INCLUDED_SAL_INTERNAL_ONCE_H -#define INCLUDED_SAL_INTERNAL_ONCE_H - -/** sal_once_type - * (platform dependent) - */ - -#if defined(SAL_UNX) - -#include pthread.h - -typedef pthread_once_t sal_once_type; - -#define SAL_ONCE_INIT PTHREAD_ONCE_INIT -#define SAL_ONCE(once, init) pthread_once((once), (init)) - -#elif defined(SAL_W32) - -#define WIN32_LEAN_AND_MEAN -#pragma warning(push,1) /* disable warnings within system headers */ -#include windows.h -#pragma warning(pop) - -typedef struct sal_once_st sal_once_type; -struct sal_once_st -{ -LONG volatile m_done; -LONG volatile m_lock; -}; - -#define SAL_ONCE_INIT { 0, 0 } -#define SAL_ONCE(once, init) \ -{ \ -sal_once_type * control = (once); \ -if (!(control-m_done)) \ -{ \ -while (InterlockedExchange((control-m_lock), 1) == 1) Sleep(0); \ -if (!(control-m_done)) \ -{ \ -void (*init_routine)(void) = (init); \ -(*init_routine)(); \ -control-m_done = 1; \ -} \ -InterlockedExchange((control-m_lock), 0); \ -} \ -} - -#else -#error Unknown platform -#endif /* SAL_UNX | SAL_W32 */ - -#endif /* INCLUDED_SAL_INTERNAL_ONCE_H */ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sal/rtl/source/alloc_arena.cxx b/sal/rtl/source/alloc_arena.cxx index 20ee962..03c7f47 100644 --- a/sal/rtl/source/alloc_arena.cxx +++ b/sal/rtl/source/alloc_arena.cxx @@ -30,7 +30,6 @@ #include alloc_arena.hxx #include alloc_impl.hxx -#include internal/once.h #include internal/rtllifecycle.h #include sal/macros.h #include osl/diagnose.h diff --git a/sal/rtl/source/alloc_cache.cxx b/sal/rtl/source/alloc_cache.cxx index a1d8d54..0769b8e 100644 --- a/sal/rtl/source/alloc_cache.cxx +++ b/sal/rtl/source/alloc_cache.cxx @@ -29,7 +29,6 @@ #include alloc_cache.hxx #include alloc_impl.hxx #include alloc_arena.hxx -#include internal/once.h #include internal/rtllifecycle.h #include sal/macros.h #include osl/diagnose.h diff --git a/sal/rtl/source/alloc_global.cxx b/sal/rtl/source/alloc_global.cxx index e48fdd1..c0de496 100644 --- a/sal/rtl/source/alloc_global.cxx +++ b/sal/rtl/source/alloc_global.cxx @@ -51,7 +51,6 @@ static void determine_alloc_mode() * * = */ -#include internal/once.h #include sal/macros.h /* = * diff --git a/sal/rtl/source/locale.cxx b/sal/rtl/source/locale.cxx index 1d975ad..885b139 100644 --- a/sal/rtl/source/locale.cxx +++ b/sal/rtl/source/locale.cxx @@ -31,7 +31,6 @@ #include osl/diagnose.h #include rtl/alloc.h -#include internal/once.h #include internal/rtllifecycle.h static sal_Int32 RTL_HASHTABLE_SIZE[] = ___ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits