[Libreoffice-commits] core.git: desktop/source include/rtl sal/qa sal/rtl

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Aug 2 06:20:15 UTC 2018


 desktop/source/lib/init.cxx    |    4 +--
 include/rtl/alloc.h            |   30 ++------------------------
 sal/qa/rtl/alloc/rtl_alloc.cxx |    4 +--
 sal/rtl/strimp.cxx             |   46 ++++++++++++++++-------------------------
 4 files changed, 25 insertions(+), 59 deletions(-)

New commits:
commit e3c0b6e6eecdcd94b37d8bb126668ec0db52d487
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Wed Aug 1 20:39:18 2018 +0200
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Thu Aug 2 08:19:49 2018 +0200

    Revert rtl_alloc_preInit back to boolean argument
    
    This effectively reverts 271a663d2f098f3f665cab6da2e13b265a7eab93 "rtl: support
    start/stop threads around pre-init" again, now that
    df6ba650469a6f2fda06ef1c2e107ccdd3570505 "Remove 'officially dead now' rtl_cache
    slab allocator mechanism" removed the wsupdate thread.
    
    (rtl_alloc_preInit is an internal-use-only C function, so changing its arguments
    doesn't affect URE compatibility.)
    
    Change-Id: Ie9bce86377f9520e2600e4111ac525dddace10f8
    Reviewed-on: https://gerrit.libreoffice.org/58443
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 04f586ce4eb3..3af3b54d015f 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -3815,9 +3815,9 @@ static int lo_initialize(LibreOfficeKit* pThis, const char* pAppPath, const char
         return 1;
 
     if (eStage == PRE_INIT)
-        rtl_alloc_preInit(rtlAllocPreInitStart);
+        rtl_alloc_preInit(true);
     else if (eStage == SECOND_INIT)
-        rtl_alloc_preInit(rtlAllocPreInitEnd);
+        rtl_alloc_preInit(false);
 
     if (eStage != SECOND_INIT)
         comphelper::LibreOfficeKit::setActive();
diff --git a/include/rtl/alloc.h b/include/rtl/alloc.h
index cc3cec6ef292..74d4ea5c4339 100644
--- a/include/rtl/alloc.h
+++ b/include/rtl/alloc.h
@@ -289,38 +289,14 @@ SAL_DLLPUBLIC void SAL_CALL rtl_cache_free (
 #ifdef LIBO_INTERNAL_ONLY
 
 /** @cond INTERNAL */
-/** rtl_alloc_preInit_phase_t
- *
- * This is used to control the pre-init logic
- * in rtl_alloc_preInit. The reason for this is
- * to first initialize all caching and other memory
- * logic from WSD (the Online daemon) at startup.
- * All these pages will then be forked over when
- * spawning per-document instances. This is done
- * by calling rtl_alloc_preInit with rtlAllocPreInitStart.
- *
- * @since LibreOffice 6.1
- */
-typedef enum
-{
-    // Start phase I of pre-init.
-    rtlAllocPreInitStart,
-    // Finish phase I of pre-init (before forking).
-    rtlAllocPreInitEnd,
-    // Post pre-init and after forking; no longer used.
-    rtlAllocPostInit
-
-} rtl_alloc_preInit_phase_t;
-
-/** @cond INTERNAL */
 /** rtl_alloc_preInit
  *
  * This function, is called at the beginning and again
  * at the end of LibreOfficeKit pre-initialization to enable
  * various optimizations.
  *
- * Its function is to annotate a section @phase = rtlAllocPreInitStart
- * to end (@phase = rtlAllocPreInitEnd) via. two calls. Inside this
+ * Its function is to annotate a section @start = true
+ * to end (@start = false) via. two calls. Inside this
  * section string allocators are replaced with ones which cause the
  * strings to be staticized at the end of the section.
  *
@@ -341,7 +317,7 @@ typedef enum
  * @since LibreOffice 6.1
  */
 SAL_DLLPUBLIC void SAL_CALL rtl_alloc_preInit (
-    rtl_alloc_preInit_phase_t phase
+    sal_Bool start
 ) SAL_THROW_EXTERN_C();
 /** @endcond */
 
diff --git a/sal/qa/rtl/alloc/rtl_alloc.cxx b/sal/qa/rtl/alloc/rtl_alloc.cxx
index 37c7b41eb338..0e9b7c0f47a8 100644
--- a/sal/qa/rtl/alloc/rtl_alloc.cxx
+++ b/sal/qa/rtl/alloc/rtl_alloc.cxx
@@ -158,7 +158,7 @@ public:
         const char *sample = "Hello World";
         std::vector<OUString> aStrings;
 
-        rtl_alloc_preInit(rtlAllocPreInitStart);
+        rtl_alloc_preInit(true);
 
         OUString aFoo("foo");
 
@@ -183,7 +183,7 @@ public:
         }
 
         // should static-ize all the strings.
-        rtl_alloc_preInit(rtlAllocPreInitEnd);
+        rtl_alloc_preInit(false);
 
         for (size_t i = 0; i < aStrings.size(); ++i)
             CPPUNIT_ASSERT_MESSAGE( "static after.", (aStrings[i].pData->refCount & SAL_STRING_STATIC_FLAG) );
diff --git a/sal/rtl/strimp.cxx b/sal/rtl/strimp.cxx
index e356a4e921a6..d1651a2ad1d7 100644
--- a/sal/rtl/strimp.cxx
+++ b/sal/rtl/strimp.cxx
@@ -94,36 +94,26 @@ static void mark_static(void *addr, sal_Size /* size */)
     str->refCount |= SAL_STRING_STATIC_FLAG;
 }
 
-void SAL_CALL rtl_alloc_preInit (rtl_alloc_preInit_phase_t phase) SAL_THROW_EXTERN_C()
+void SAL_CALL rtl_alloc_preInit (sal_Bool start) SAL_THROW_EXTERN_C()
 {
-    switch (phase)
+    if (start)
     {
-        case rtlAllocPreInitStart:
-        {
-            rtl_allocateString = pre_allocateStringFn;
-            rtl_freeString = pre_freeStringFn;
-            pre_arena = rtl_arena_create("pre-init strings", 4, 0,
-                                         nullptr, rtl_arena_alloc,
-                                         rtl_arena_free, 0);
-
-            // To be consistent (and to ensure the rtl_cache threads are started).
-            ensureCacheSingleton();
-        }
-        break;
-
-        case rtlAllocPreInitEnd:
-        // back to normal
-        {
-            rtl_arena_foreach(pre_arena, mark_static);
-            rtl_allocateString = rtl_allocateMemory;
-            rtl_freeString = rtl_freeMemory;
-
-            // TODO: also re-initialize main allocator as well.
-        }
-        break;
-
-        case rtlAllocPostInit: // no longer used
-        break;
+        rtl_allocateString = pre_allocateStringFn;
+        rtl_freeString = pre_freeStringFn;
+        pre_arena = rtl_arena_create("pre-init strings", 4, 0,
+                                     nullptr, rtl_arena_alloc,
+                                     rtl_arena_free, 0);
+
+        // To be consistent (and to ensure the rtl_cache threads are started).
+        ensureCacheSingleton();
+    }
+    else
+    {
+        rtl_arena_foreach(pre_arena, mark_static);
+        rtl_allocateString = rtl_allocateMemory;
+        rtl_freeString = rtl_freeMemory;
+
+        // TODO: also re-initialize main allocator as well.
     }
 }
 


More information about the Libreoffice-commits mailing list