Bug 1251473 - Remove libxpcomrt library. r=froydnj
☠☠ backed out by 22424f6eeb30 ☠ ☠
authorEric Rahm <erahm@mozilla.com>
Thu, 25 Feb 2016 16:31:17 -0800
changeset 322238 ab0347657e25475064c29a193d5505075500901a
parent 322237 1d385d4f195d718b74177e7f10ebf1df87496dfe
child 322239 9e33adec1aa6ad104fda36cd417d33043fe47a08
push id5913
push userjlund@mozilla.com
push dateMon, 25 Apr 2016 16:57:49 +0000
treeherdermozilla-beta@dcaf0a6fa115 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersfroydnj
bugs1251473
milestone47.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1251473 - Remove libxpcomrt library. r=froydnj
xpcom/libxpcomrt/XPCOMRTInit.cpp
xpcom/libxpcomrt/XPCOMRTInit.h
xpcom/libxpcomrt/XPCOMRTModule.inc
xpcom/libxpcomrt/XPCOMRTStubs.cpp
xpcom/libxpcomrt/docs/index.rst
xpcom/libxpcomrt/moz.build
xpcom/moz.build
deleted file mode 100644
--- a/xpcom/libxpcomrt/XPCOMRTInit.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim:set ts=4 sw=4 sts=4 ci et: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "mozilla/Module.h"
-#include "mozilla/ModuleUtils.h"
-#include "mozilla/NullPtr.h"
-#include "mozilla/TimeStamp.h"
-#include "nsCategoryManager.h"
-#include "nsComponentManager.h"
-#include "nsDebugImpl.h"
-#include "nsIErrorService.h"
-#include "nsMemoryImpl.h"
-#include "nsNetCID.h"
-#include "nsNetModuleStandalone.h"
-#include "nsObserverService.h"
-#include "nsThreadManager.h"
-#include "nsThreadPool.h"
-#include "nsUUIDGenerator.h"
-#include "nsXPCOMCIDInternal.h"
-#include "nsXPCOMPrivate.h"
-#include "TimerThread.h"
-#include "XPCOMRTInit.h"
-
-static NS_DEFINE_CID(kComponentManagerCID, NS_COMPONENTMANAGER_CID);
-
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsTimerImpl)
-NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsUUIDGenerator, Init)
-
-static nsresult
-nsThreadManagerGetSingleton(nsISupports* aOuter,
-                            const nsIID& aIID,
-                            void** aInstancePtr)
-{
-  NS_ASSERTION(aInstancePtr, "null outptr");
-  if (NS_WARN_IF(aOuter)) {
-    return NS_ERROR_NO_AGGREGATION;
-  }
-
-  return nsThreadManager::get()->QueryInterface(aIID, aInstancePtr);
-}
-
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsThreadPool)
-
-nsComponentManagerImpl* nsComponentManagerImpl::gComponentManager = nullptr;
-bool gXPCOMShuttingDown = false;
-bool gXPCOMThreadsShutDown = false;
-
-#define COMPONENT(NAME, Ctor) static NS_DEFINE_CID(kNS_##NAME##_CID, NS_##NAME##_CID);
-#include "XPCOMRTModule.inc"
-#undef COMPONENT
-
-#define COMPONENT(NAME, Ctor) { &kNS_##NAME##_CID, false, nullptr, Ctor },
-const mozilla::Module::CIDEntry kXPCOMCIDEntries[] = {
-  { &kComponentManagerCID, true, nullptr, nsComponentManagerImpl::Create },
-#include "XPCOMRTModule.inc"
-  { nullptr }
-};
-#undef COMPONENT
-
-#define COMPONENT(NAME, Ctor) { NS_##NAME##_CONTRACTID, &kNS_##NAME##_CID },
-const mozilla::Module::ContractIDEntry kXPCOMContracts[] = {
-#include "XPCOMRTModule.inc"
-  { nullptr }
-};
-#undef COMPONENT
-
-const mozilla::Module kXPCOMRTModule = {
-  mozilla::Module::kVersion, kXPCOMCIDEntries, kXPCOMContracts
-};
-
-nsresult
-NS_InitXPCOMRT()
-{
-  nsresult rv = NS_OK;
-
-  NS_SetMainThread();
-
-  mozilla::TimeStamp::Startup();
-
-  rv = nsThreadManager::get()->Init();
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return rv;
-  }
-
-  // Set up the timer globals/timer thread
-  rv = nsTimerImpl::Startup();
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return rv;
-  }
-
-  nsComponentManagerImpl::gComponentManager = new nsComponentManagerImpl();
-  NS_ADDREF(nsComponentManagerImpl::gComponentManager);
-
-  rv = nsComponentManagerImpl::gComponentManager->Init();
-  if (NS_FAILED(rv)) {
-    NS_RELEASE(nsComponentManagerImpl::gComponentManager);
-    return rv;
-  }
-
-  mozilla::InitNetModuleStandalone();
-
-  return NS_OK;
-}
-
-nsresult
-NS_ShutdownXPCOMRT()
-{
-  nsresult rv = NS_OK;
-
-  // Notify observers of xpcom shutting down
-  {
-    // Block it so that the COMPtr will get deleted before we hit
-    // servicemanager shutdown
-
-    nsCOMPtr<nsIThread> thread = do_GetCurrentThread();
-
-    if (NS_WARN_IF(!thread)) {
-      return NS_ERROR_UNEXPECTED;
-    }
-
-    RefPtr<nsObserverService> observerService;
-    CallGetService("@mozilla.org/observer-service;1",
-                     (nsObserverService**)getter_AddRefs(observerService));
-
-    if (observerService) {
-      observerService->NotifyObservers(nullptr,
-                                       NS_XPCOM_WILL_SHUTDOWN_OBSERVER_ID,
-                                       nullptr);
-
-      nsCOMPtr<nsIServiceManager> mgr;
-      rv = NS_GetServiceManager(getter_AddRefs(mgr));
-      if (NS_SUCCEEDED(rv)) {
-        observerService->NotifyObservers(mgr, NS_XPCOM_SHUTDOWN_OBSERVER_ID,
-                                         nullptr);
-      }
-    }
-
-    // This must happen after the shutdown of media and widgets, which
-    // are triggered by the NS_XPCOM_SHUTDOWN_OBSERVER_ID notification.
-    NS_ProcessPendingEvents(thread);
-
-    if (observerService)
-      observerService->NotifyObservers(nullptr,
-                                       NS_XPCOM_SHUTDOWN_THREADS_OBSERVER_ID,
-                                       nullptr);
-
-    gXPCOMThreadsShutDown = true;
-    NS_ProcessPendingEvents(thread);
-
-    // Shutdown the timer thread and all timers that might still be alive before
-    // shutting down the component manager
-    nsTimerImpl::Shutdown();
-
-    NS_ProcessPendingEvents(thread);
-
-    // Net module needs to be shutdown before the thread manager or else
-    // the thread manager will hang waiting for the socket transport
-    // service to shutdown.
-    mozilla::ShutdownNetModuleStandalone();
-
-    // Shutdown all remaining threads.  This method does not return until
-    // all threads created using the thread manager (with the exception of
-    // the main thread) have exited.
-    nsThreadManager::get()->Shutdown();
-
-    NS_ProcessPendingEvents(thread);
-  }
-
-  mozilla::services::Shutdown();
-
-  // Shutdown global servicemanager
-  if (nsComponentManagerImpl::gComponentManager) {
-    nsComponentManagerImpl::gComponentManager->FreeServices();
-  }
-
-  // Shutdown xpcom. This will release all loaders and cause others holding
-  // a refcount to the component manager to release it.
-  if (nsComponentManagerImpl::gComponentManager) {
-    rv = (nsComponentManagerImpl::gComponentManager)->Shutdown();
-    NS_ASSERTION(NS_SUCCEEDED(rv), "Component Manager shutdown failed.");
-  } else {
-    NS_WARNING("Component Manager was never created ...");
-  }
-
-  // Finally, release the component manager last because it unloads the
-  // libraries:
-  if (nsComponentManagerImpl::gComponentManager) {
-    nsrefcnt cnt;
-    NS_RELEASE2(nsComponentManagerImpl::gComponentManager, cnt);
-    NS_ASSERTION(cnt == 0, "Component Manager being held past XPCOM shutdown.");
-  }
-  nsComponentManagerImpl::gComponentManager = nullptr;
-  nsCategoryManager::Destroy();
-
-  return NS_OK;
-}
deleted file mode 100644
--- a/xpcom/libxpcomrt/XPCOMRTInit.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim:set ts=4 sw=4 sts=4 ci et: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef XPCOMRT_INIT_H__
-#define XPCOMRT_INIT_H__
-
-#include "nsError.h"
-
-nsresult NS_InitXPCOMRT();
-nsresult NS_ShutdownXPCOMRT();
-
-#endif // define XPCOMRT_INIT_H__
deleted file mode 100644
--- a/xpcom/libxpcomrt/XPCOMRTModule.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-    COMPONENT(MEMORY, nsMemoryImpl::Create)
-    COMPONENT(DEBUG,  nsDebugImpl::Create)
-    COMPONENT(CATEGORYMANAGER, nsCategoryManager::Create)
-    COMPONENT(OBSERVERSERVICE, nsObserverService::Create)
-    COMPONENT(TIMER, nsTimerImplConstructor)
-    COMPONENT(THREADMANAGER, nsThreadManagerGetSingleton)
-    COMPONENT(THREADPOOL, nsThreadPoolConstructor)
-    COMPONENT(UUID_GENERATOR, nsUUIDGeneratorConstructor)
deleted file mode 100644
--- a/xpcom/libxpcomrt/XPCOMRTStubs.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim:set ts=4 sw=4 sts=4 ci et: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsXULAppAPI.h"
-#include "mozilla/TimeStamp.h"
-
-
-GeckoProcessType
-XRE_GetProcessType()
-{
-  return GeckoProcessType_Default;
-}
-
-bool
-XRE_IsParentProcess()
-{
-  return XRE_GetProcessType() == GeckoProcessType_Default;
-}
-
-bool
-XRE_IsContentProcess()
-{
-  return XRE_GetProcessType() == GeckoProcessType_Content;
-}
-
-#define PRINT_CALLED fprintf(stderr, "!!! ERROR: function %s defined in file %s should not be called, needs to be correctly implemented.\n", __FUNCTION__, __FILE__)
-
-class nsAString;
-class nsCString;
-
-namespace base {
-  class Histogram;
-} // namespace base
-
-namespace mozilla {
-namespace Telemetry {
-
-#include "mozilla/TelemetryHistogramEnums.h"
-
-void Accumulate(ID id, uint32_t sample) {}
-void Accumulate(ID id, const nsCString& key, uint32_t sample) {}
-void Accumulate(const char* name, uint32_t sample) {}
-void AccumulateTimeDelta(ID id, TimeStamp start, TimeStamp end) {}
-
-base::Histogram* GetHistogramById(ID id)
-{
-  return nullptr;
-}
-
-base::Histogram* GetKeyedHistogramById(ID id, const nsAString&)
-{
-  return nullptr;
-}
-
-} // namespace Telemetry
-
-namespace detail {
-
-void log_print(const PRLogModuleInfo* aModule, LogLevel aLevel, const char* aFmt, ...) {}
-
-} // namespace detail
-} // namespace mozilla
deleted file mode 100644
--- a/xpcom/libxpcomrt/docs/index.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-==========================
- XPCOM Standalone Library
-==========================
-
-What it is for
---------------
-The XPCOM standalone library, libxpcomrt, was created to support building the WebRTC
-standalone library. The libxpcomrt library contains only the parts of XPCOM that are required
-to run WebRTC; parts such as the cycle collector and the startup cache required only by Gecko
-are not included. A library containing a small subset of Necko was also
-created to support the WebRTC standalone library.
-
-The libxcomrt library was created specifically to support the WebRTC standalone library.
-It is not intended to be used as a general purpose library to add XPCOM functionality to
-an application. It is likely that some of the code contained in the libxpcomrt library
-has unresolved symbols that may be exposed if used for purposes other than being linked
-into the WebRTC standalone library.
-
-How to use it
--------------
-When compiling code utilizing libxpcomrt, both ``MOZILLA_INTERNAL_API`` and ``MOZILLA_XPCOMRT_API``
-must be defined in addition to whatever standard flags are used to compile Gecko.
-The library is initialized with ``NS_InitXPCOMRT()`` and shutdown with ``NS_ShutdownXPCOMRT()``.
-Both functions are declared in xpcom/libxpcomrt/XPCOMRTInit.h.
-Only a small number of services which are required for the WebRTC
-standalone library to function are included with libxpcomrt. The dynamic loading of services is not
-supported. Including a service through ``NSMODULE_DEFN`` and static linking is also not supported.
-The only way to add a service to libxpcomrt is to explicitly start the service during
-``nsComponentManagerImpl::Init`` in xpcom/components/nsComponentManager.cpp.
-The best method to determine what parts of XPCOM are included in libxpcomrt is to examine the
-xpcom/libxpcomrt/moz.build file. It contains all of the XPCOM source files used to build libxpcomrt.
-A few of the services that are included are:
-
-* UUID Generator
-* DNS Service
-* Socket Transport Service
-* IDN Service
-
-All dependencies on ipc/chromium have been removed.
-IO and preference services are not included making this library of limited utility.
deleted file mode 100644
--- a/xpcom/libxpcomrt/moz.build
+++ /dev/null
@@ -1,142 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-if CONFIG['OS_TARGET'] != 'WINNT' and CONFIG['MOZ_WIDGET_TOOLKIT'] != 'gonk':
-    Library('xpcomrt')
-
-src_list = [
-    'XPCOMRTInit.cpp',
-    'XPCOMRTStubs.cpp',
-]
-
-xpcom_base_src = [
-    'nsDebugImpl.cpp',
-    'nsMemoryImpl.cpp',
-    'nsUUIDGenerator.cpp',
-]
-src_list += [
-    '/xpcom/base/%s' % s for s in xpcom_base_src
-]
-
-xpcom_build_src = [
-    'FileLocation.cpp',
-    'Services.cpp',
-]
-src_list += [
-    '/xpcom/build/%s' % s for s in xpcom_build_src
-]
-
-xpcom_components_src = [
-    'nsCategoryManager.cpp',
-    'nsComponentManager.cpp',
-]
-src_list += [
-    '/xpcom/components/%s' % s for s in xpcom_components_src
-]
-
-xpcom_ds_src = [
-    'nsObserverList.cpp',
-    'nsObserverService.cpp',
-    'nsStringEnumerator.cpp',
-    'nsSupportsPrimitives.cpp',
-]
-
-src_list += [
-    '/xpcom/ds/%s' % s for s in xpcom_ds_src
-]
-
-xpcom_glue_src = [
-    'BlockingResourceBase.cpp',
-    'nsArrayEnumerator.cpp',
-    'nsClassInfoImpl.cpp',
-    'nsCOMArray.cpp',
-    'nsCOMPtr.cpp',
-    'nsCRTGlue.cpp',
-    'nsComponentManagerUtils.cpp',
-    'nsEnumeratorUtils.cpp',
-    'GenericFactory.cpp',
-    'nsID.cpp',
-    'nsISupportsImpl.cpp',
-    'nsMemory.cpp',
-    'nsQuickSort.cpp',
-    'nsTArray.cpp',
-    'nsTObserverArray.cpp',
-    'nsThreadUtils.cpp',
-    'nsWeakReference.cpp',
-    'PLDHashTable.cpp',
-]
-src_list += [
-    '/xpcom/glue/%s' % s for s in xpcom_glue_src
-]
-
-xpcom_io_src = [
-    'nsNativeCharsetUtils.cpp',
-]
-src_list += [
-    '/xpcom/io/%s' % s for s in xpcom_io_src
-]
-
-xpcom_string_src = [
-    'nsDependentSubstring.cpp',
-    'nsPromiseFlatString.cpp',
-    'nsReadableUtils.cpp',
-    'nsString.cpp',
-    'nsStringComparator.cpp',
-    'nsStringObsolete.cpp',
-    'nsSubstring.cpp',
-    'nsSubstringTuple.cpp',
-]
-if CONFIG['INTEL_ARCHITECTURE']:
-    xpcom_string_src += ['nsUTF8UtilsSSE2.cpp']
-src_list += [
-    '/xpcom/string/%s' % s for s in xpcom_string_src
-]
-
-xpcom_threads_src = [
-    'LazyIdleThread.cpp',
-    'nsEnvironment.cpp',
-    'nsEventQueue.cpp',
-    'nsMemoryPressure.cpp',
-    'nsProcessCommon.cpp',
-    'nsThread.cpp',
-    'nsThreadManager.cpp',
-    'nsThreadPool.cpp',
-    'nsTimerImpl.cpp',
-    'TimerThread.cpp',
-]
-src_list += [
-    '/xpcom/threads/%s' % s for s in xpcom_threads_src
-]
-
-
-SOURCES += sorted(src_list)
-
-if CONFIG['INTEL_ARCHITECTURE']:
-    sse_string_path = '/xpcom/string/nsUTF8UtilsSSE2.cpp'
-    SOURCES[sse_string_path].flags += CONFIG['SSE2_FLAGS']
-
-LOCAL_INCLUDES = [
-    '!..',
-    '../base',
-    '../build',
-    '../components',
-    '../ds',
-    '../glue',
-    '../threads',
-    '/netwerk/standalone/',
-    '/xpcom/reflect/xptinfo/',
-]
-
-DEFINES['MOZILLA_INTERNAL_API'] = True
-DEFINES['MOZILLA_XPCOMRT_API'] = True
-DEFINES['MOZILLA_EXTERNAL_LINKAGE'] = True
-
-include('/ipc/chromium/chromium-config.mozbuild')
-
-SPHINX_TREES['libxpcomrt'] = 'docs'
-
-if CONFIG['GNU_CXX']:
-    CXXFLAGS += ['-Wshadow']
--- a/xpcom/moz.build
+++ b/xpcom/moz.build
@@ -19,17 +19,16 @@ DIRS += [
     'ds',
     'io',
     'components',
     'threads',
     'reflect',
     'system',
     '../chrome',
     'build',
-    'libxpcomrt',
 ]
 
 if CONFIG['OS_ARCH'] == 'WINNT' and CONFIG['MOZ_DEBUG']:
     DIRS += ['windbgdlg']
 
 TEST_DIRS += [
     'tests',
 ]