Bug 709657: Split uconv out of libxul. r=me a=me CLOSED TREE
authorKyle Huey <khuey@kylehuey.com>
Tue, 13 Dec 2011 10:48:16 -0500
changeset 84138 271d2711b66cc0bdea4cdd6e05140d34ebfa062b
parent 84137 892998b307696babf22246350b2df47d1067a15c
child 84139 5ae946cbde555791ff3a2887d41290116a3f825b
child 84201 cf0b31ff2b6db576fbfc6e6756fc40a1064b8225
push id519
push userakeybl@mozilla.com
push dateWed, 01 Feb 2012 00:38:35 +0000
treeherdermozilla-beta@788ea1ef610b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersme, me
bugs709657
milestone11.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 709657: Split uconv out of libxul. r=me a=me CLOSED TREE
browser/installer/package-manifest.in
intl/uconv/datamodule/Makefile.in
intl/uconv/datamodule/nsUConvDataModule.cpp
intl/uconv/src/Makefile.in
intl/uconv/src/nsUConvModule.cpp
intl/uconv/ucvcn/Makefile.in
intl/uconv/ucvcn/nsISO2022CNToUnicode.cpp
intl/uconv/ucvibm/Makefile.in
intl/uconv/ucvja/Makefile.in
intl/uconv/ucvja/nsJapaneseToUnicode.cpp
intl/uconv/ucvko/Makefile.in
intl/uconv/ucvko/nsISO2022KRToUnicode.cpp
intl/uconv/ucvlatin/Makefile.in
intl/uconv/ucvtw/Makefile.in
intl/uconv/ucvtw2/Makefile.in
intl/uconv/util/Makefile.in
intl/uconv/util/external/Makefile.in
intl/uconv/util/objs.mk
testing/xpcshell/runxpcshelltests.py
toolkit/library/Makefile.in
toolkit/library/nsStaticXULComponents.cpp
toolkit/toolkit-tiers.mk
xpcom/build/nsXPCOM.h
xpcom/glue/BlockingResourceBase.h
xpcom/glue/DeadlockDetector.h
xpcom/glue/nsCycleCollectorUtils.h
xpcom/stub/nsXPComStub.cpp
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -46,16 +46,19 @@
 @BINPATH@/@DLL_PREFIX@nspr4@DLL_SUFFIX@
 @BINPATH@/@DLL_PREFIX@mozalloc@DLL_SUFFIX@
 @BINPATH@/@DLL_PREFIX@mozutils@DLL_SUFFIX@
 #ifdef XP_MACOSX
 @BINPATH@/XUL
 #else
 @BINPATH@/@DLL_PREFIX@xul@DLL_SUFFIX@
 #endif
+#ifdef XP_WIN
+@BINPATH@/components/@DLL_PREFIX@uconvd@DLL_SUFFIX@
+#endif
 #ifdef XP_MACOSX
 @BINPATH@/@MOZ_CHILD_PROCESS_NAME@.app/
 @BINPATH@/@DLL_PREFIX@plugin_child_interpose@DLL_SUFFIX@
 #else
 @BINPATH@/@MOZ_CHILD_PROCESS_NAME@
 #endif
 #ifdef XP_WIN32
 #if _MSC_VER == 1400
copy from intl/uconv/src/Makefile.in
copy to intl/uconv/datamodule/Makefile.in
--- a/intl/uconv/src/Makefile.in
+++ b/intl/uconv/datamodule/Makefile.in
@@ -37,75 +37,60 @@
 
 DEPTH		= ../../..
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-MODULE		= uconv
-LIBRARY_NAME	= uconv
+MODULE		= uconvd
+LIBRARY_NAME	= uconvd
 EXPORT_LIBRARY  = 1
 IS_COMPONENT	= 1
-MODULE_NAME	= nsUConvModule
-GRE_MODULE	= 1
+MODULE_NAME	= UConvData
+ifeq (WINNT,$(OS_TARGET))
+FORCE_SHARED_LIB = 1
+else
 LIBXUL_LIBRARY = 1
+endif
 # To avoid conflict with OS/2 system uconv.dll
-SHORT_LIBNAME  = mozuconv
+SHORT_LIBNAME  = mzuconvd
 
 CPPSRCS		= \
-		nsUConvModule.cpp \
-		nsConverterInputStream.cpp \
-		nsConverterOutputStream.cpp \
-		nsTextToSubURI.cpp \
-		nsCharsetConverterManager.cpp \
-		nsUTF8ConverterService.cpp \
-		nsUTF8ToUnicode.cpp \
-		nsUnicodeToUTF8.cpp \
-		nsScriptableUConv.cpp \
-		nsISO88591ToUnicode.cpp \
-		nsCP1252ToUnicode.cpp \
-		nsMacRomanToUnicode.cpp \
-		nsUnicodeToISO88591.cpp \
-		nsUnicodeToCP1252.cpp \
-		nsUnicodeToMacRoman.cpp \
+		nsUConvDataModule.cpp \
 		$(NULL)
 
-# Are we targeting x86-32 or x86-64?  If so, we want to include the SSE2
-# version of nsUTF8ToUnicodeSSE2.cpp.
-ifneq (,$(INTEL_ARCHITECTURE))
-CPPSRCS			+= nsUTF8ToUnicodeSSE2.cpp
-endif
-
 LOCAL_INCLUDES	= -I$(srcdir)/../util \
 		  -I$(srcdir)/../ucvlatin \
 		  -I$(srcdir)/../ucvibm \
 		  -I$(srcdir)/../ucvja \
 		  -I$(srcdir)/../ucvtw2 \
 		  -I$(srcdir)/../ucvtw \
 		  -I$(srcdir)/../ucvko \
 		  -I$(srcdir)/../ucvcn \
 		  $(NULL)
 
+EXTRA_DSO_LDOPTS += \
+  $(XPCOM_GLUE_LDOPTS) \
+  $(XPCOM_LIBS) \
+  $(MOZ_JS_LIBS) \
+  $(NSPR_LIBS) \
+  $(MOZALLOC_LIB) \
+  $(NULL)
+
 SHARED_LIBRARY_LIBS += \
 	../ucvlatin/$(LIB_PREFIX)ucvlatin_s.$(LIB_SUFFIX) \
 	../ucvibm/$(LIB_PREFIX)ucvibm_s.$(LIB_SUFFIX) \
 	../ucvja/$(LIB_PREFIX)ucvja_s.$(LIB_SUFFIX) \
 	../ucvtw2/$(LIB_PREFIX)ucvtw2_s.$(LIB_SUFFIX) \
 	../ucvtw/$(LIB_PREFIX)ucvtw_s.$(LIB_SUFFIX) \
 	../ucvko/$(LIB_PREFIX)ucvko_s.$(LIB_SUFFIX) \
 	../ucvcn/$(LIB_PREFIX)ucvcn_s.$(LIB_SUFFIX) \
 	$(NULL)
 
-include $(topsrcdir)/config/rules.mk
-
-ifneq (,$(INTEL_ARCHITECTURE))
-# nsUTF8ToUnicodeSSE2.cpp uses SSE2 intrinsics, so we need to pass -msse2 if
-# we're using gcc. (See bug 585538 comment 12.)
-ifdef GNU_CC
-nsUTF8ToUnicodeSSE2.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
+ifdef FORCE_SHARED_LIB
+SHARED_LIBRARY_LIBS += \
+  ../util/external/$(LIB_PREFIX)ucvxutil_s.$(LIB_SUFFIX) \
+  $(NULL)
 endif
 
-ifdef SOLARIS_SUNPRO_CXX
-nsUTF8ToUnicodeSSE2.$(OBJ_SUFFIX): OS_CXXFLAGS += -xarch=sse2 -xO4
-endif
-endif
+include $(topsrcdir)/config/rules.mk
copy from intl/uconv/src/nsUConvModule.cpp
copy to intl/uconv/datamodule/nsUConvDataModule.cpp
--- a/intl/uconv/src/nsUConvModule.cpp
+++ b/intl/uconv/datamodule/nsUConvDataModule.cpp
@@ -42,41 +42,24 @@
 #include "nsIComponentManager.h"
 #include "nsICategoryManager.h"
 #include "nsICharsetConverterManager.h"
 #include "nsEncoderDecoderUtils.h"
 #include "nsIUnicodeDecoder.h"
 #include "nsIUnicodeEncoder.h"
 #include "nsIServiceManager.h"
 
+#include "mozilla/BlockingResourceBase.h"
 
 #include "nsUConvCID.h"
-#include "nsCharsetConverterManager.h"
-#include "nsTextToSubURI.h"
-#include "nsUTF8ConverterService.h"
-#include "nsConverterInputStream.h"
-#include "nsConverterOutputStream.h"
-#include "nsScriptableUConv.h"
-
-#include "nsITextToSubURI.h"
 
 #include "nsIFile.h"
 
 #include "nsCRT.h"
 
-#include "nsUCSupport.h"
-#include "nsISO88591ToUnicode.h"
-#include "nsCP1252ToUnicode.h"
-#include "nsMacRomanToUnicode.h"
-#include "nsUTF8ToUnicode.h"
-#include "nsUnicodeToISO88591.h"
-#include "nsUnicodeToCP1252.h"
-#include "nsUnicodeToMacRoman.h"
-#include "nsUnicodeToUTF8.h"
-
 // ucvlatin
 #include "nsUCvLatinCID.h"
 #include "nsUCvLatinDll.h"
 #include "nsAsciiToUnicode.h"
 #include "nsISO88592ToUnicode.h"
 #include "nsISO88593ToUnicode.h"
 #include "nsISO88594ToUnicode.h"
 #include "nsISO88595ToUnicode.h"
@@ -378,24 +361,18 @@ NS_UCONV_REG_UNREG_DECODER("ISO-2022-KR"
 
 // ucvcn
 NS_UCONV_REG_UNREG("GB2312", NS_GB2312TOUNICODE_CID, NS_UNICODETOGB2312_CID)
 NS_UCONV_REG_UNREG("gbk", NS_GBKTOUNICODE_CID, NS_UNICODETOGBK_CID)
 NS_UCONV_REG_UNREG("HZ-GB-2312", NS_HZTOUNICODE_CID, NS_UNICODETOHZ_CID)
 NS_UCONV_REG_UNREG("gb18030", NS_GB18030TOUNICODE_CID, NS_UNICODETOGB18030_CID)
 NS_UCONV_REG_UNREG_DECODER("ISO-2022-CN", NS_ISO2022CNTOUNICODE_CID)
 
-{ NS_TITLE_BUNDLE_CATEGORY, "chrome://global/locale/charsetTitles.properties", "" },
-{ NS_DATA_BUNDLE_CATEGORY, "resource://gre-resources/charsetData.properties", "" },
-  
 NS_CONVERTER_REGISTRY_END
 
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToUTF8)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF8ToUnicode)
-
 // ucvlatin
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF7ToUnicode)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsMUTF7ToUnicode)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF16ToUnicode)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF16BEToUnicode)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF16LEToUnicode)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToUTF7)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToMUTF7)
@@ -550,37 +527,16 @@ const PRUint16 g_ucvko_AsciiMapping[] = 
 const PRUint16 g_HangulNullMapping[] ={
   0x0001, 0x0004, 0x0005, 0x0008, 0x0000, 0xAC00, 0xD7A3, 0xAC00
 };
 
 const PRUint16 g_ufJohabJamoMapping[] ={   
 #include "johabjamo.uf"
 };
 
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsCharsetConverterManager)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextToSubURI)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF8ConverterService)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsConverterInputStream)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsConverterOutputStream)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsScriptableUnicodeConverter)
-
-NS_DEFINE_NAMED_CID(NS_ICHARSETCONVERTERMANAGER_CID);
-NS_DEFINE_NAMED_CID(NS_TEXTTOSUBURI_CID);
-NS_DEFINE_NAMED_CID(NS_CONVERTERINPUTSTREAM_CID);
-NS_DEFINE_NAMED_CID(NS_CONVERTEROUTPUTSTREAM_CID);
-NS_DEFINE_NAMED_CID(NS_ISCRIPTABLEUNICODECONVERTER_CID);
-NS_DEFINE_NAMED_CID(NS_UTF8CONVERTERSERVICE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88591TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1252TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACROMANTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UTF8TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88591_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1252_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACROMAN_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOUTF8_CID);
 NS_DEFINE_NAMED_CID(NS_ASCIITOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_ISO88592TOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_ISO88593TOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_ISO88594TOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_ISO88595TOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_ISO88596TOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_ISO88596ITOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_ISO88596ETOUNICODE_CID);
@@ -748,30 +704,16 @@ NS_DEFINE_NAMED_CID(NS_GBKTOUNICODE_CID)
 NS_DEFINE_NAMED_CID(NS_UNICODETOGBK_CID);
 NS_DEFINE_NAMED_CID(NS_HZTOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_UNICODETOHZ_CID);
 NS_DEFINE_NAMED_CID(NS_GB18030TOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_UNICODETOGB18030_CID);
 NS_DEFINE_NAMED_CID(NS_ISO2022CNTOUNICODE_CID);
 
 static const mozilla::Module::CIDEntry kUConvCIDs[] = {
-  { &kNS_ICHARSETCONVERTERMANAGER_CID, false, NULL, nsCharsetConverterManagerConstructor },
-  { &kNS_TEXTTOSUBURI_CID, false, NULL, nsTextToSubURIConstructor },
-  { &kNS_CONVERTERINPUTSTREAM_CID, false, NULL, nsConverterInputStreamConstructor },
-  { &kNS_CONVERTEROUTPUTSTREAM_CID, false, NULL, nsConverterOutputStreamConstructor },
-  { &kNS_ISCRIPTABLEUNICODECONVERTER_CID, false, NULL, nsScriptableUnicodeConverterConstructor },
-  { &kNS_UTF8CONVERTERSERVICE_CID, false, NULL, nsUTF8ConverterServiceConstructor },
-  { &kNS_ISO88591TOUNICODE_CID, false, NULL, nsISO88591ToUnicodeConstructor },
-  { &kNS_CP1252TOUNICODE_CID, false, NULL, nsCP1252ToUnicodeConstructor },
-  { &kNS_MACROMANTOUNICODE_CID, false, NULL, nsMacRomanToUnicodeConstructor },
-  { &kNS_UTF8TOUNICODE_CID, false, NULL, nsUTF8ToUnicodeConstructor },
-  { &kNS_UNICODETOISO88591_CID, false, NULL, nsUnicodeToISO88591Constructor },
-  { &kNS_UNICODETOCP1252_CID, false, NULL, nsUnicodeToCP1252Constructor },
-  { &kNS_UNICODETOMACROMAN_CID, false, NULL, nsUnicodeToMacRomanConstructor },
-  { &kNS_UNICODETOUTF8_CID, false, NULL, nsUnicodeToUTF8Constructor },
   { &kNS_ASCIITOUNICODE_CID, false, NULL, nsAsciiToUnicodeConstructor },
   { &kNS_ISO88592TOUNICODE_CID, false, NULL, nsISO88592ToUnicodeConstructor },
   { &kNS_ISO88593TOUNICODE_CID, false, NULL, nsISO88593ToUnicodeConstructor },
   { &kNS_ISO88594TOUNICODE_CID, false, NULL, nsISO88594ToUnicodeConstructor },
   { &kNS_ISO88595TOUNICODE_CID, false, NULL, nsISO88595ToUnicodeConstructor },
   { &kNS_ISO88596TOUNICODE_CID, false, NULL, nsISO88596ToUnicodeConstructor },
   { &kNS_ISO88596ITOUNICODE_CID, false, NULL, nsISO88596IToUnicodeConstructor },
   { &kNS_ISO88596ETOUNICODE_CID, false, NULL, nsISO88596EToUnicodeConstructor },
@@ -941,30 +883,16 @@ static const mozilla::Module::CIDEntry k
   { &kNS_UNICODETOHZ_CID, false, NULL, nsUnicodeToHZConstructor },
   { &kNS_GB18030TOUNICODE_CID, false, NULL, nsGB18030ToUnicodeConstructor },
   { &kNS_UNICODETOGB18030_CID, false, NULL, nsUnicodeToGB18030Constructor },
   { &kNS_ISO2022CNTOUNICODE_CID, false, NULL, nsISO2022CNToUnicodeConstructor },
   { NULL },
 };
 
 static const mozilla::Module::ContractIDEntry kUConvContracts[] = {
-  { NS_CHARSETCONVERTERMANAGER_CONTRACTID, &kNS_ICHARSETCONVERTERMANAGER_CID },
-  { NS_ITEXTTOSUBURI_CONTRACTID, &kNS_TEXTTOSUBURI_CID },
-  { NS_CONVERTERINPUTSTREAM_CONTRACTID, &kNS_CONVERTERINPUTSTREAM_CID },
-  { "@mozilla.org/intl/converter-output-stream;1", &kNS_CONVERTEROUTPUTSTREAM_CID },
-  { NS_ISCRIPTABLEUNICODECONVERTER_CONTRACTID, &kNS_ISCRIPTABLEUNICODECONVERTER_CID },
-  { NS_UTF8CONVERTERSERVICE_CONTRACTID, &kNS_UTF8CONVERTERSERVICE_CID },
-  { NS_ISO88591TOUNICODE_CONTRACTID, &kNS_ISO88591TOUNICODE_CID },
-  { NS_CP1252TOUNICODE_CONTRACTID, &kNS_CP1252TOUNICODE_CID },
-  { NS_MACROMANTOUNICODE_CONTRACTID, &kNS_MACROMANTOUNICODE_CID },
-  { NS_UTF8TOUNICODE_CONTRACTID, &kNS_UTF8TOUNICODE_CID },
-  { NS_UNICODETOISO88591_CONTRACTID, &kNS_UNICODETOISO88591_CID },
-  { NS_UNICODETOCP1252_CONTRACTID, &kNS_UNICODETOCP1252_CID },
-  { NS_UNICODETOMACROMAN_CONTRACTID, &kNS_UNICODETOMACROMAN_CID },
-  { NS_UNICODETOUTF8_CONTRACTID, &kNS_UNICODETOUTF8_CID },
   { NS_UNICODEDECODER_CONTRACTID_BASE "us-ascii", &kNS_ASCIITOUNICODE_CID },
   { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-2", &kNS_ISO88592TOUNICODE_CID },
   { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-3", &kNS_ISO88593TOUNICODE_CID },
   { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-4", &kNS_ISO88594TOUNICODE_CID },
   { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-5", &kNS_ISO88595TOUNICODE_CID },
   { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-6", &kNS_ISO88596TOUNICODE_CID },
   { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-6-I", &kNS_ISO88596ITOUNICODE_CID },
   { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-6-E", &kNS_ISO88596ETOUNICODE_CID },
@@ -1133,16 +1061,29 @@ static const mozilla::Module::ContractID
   { NS_UNICODEDECODER_CONTRACTID_BASE "HZ-GB-2312", &kNS_HZTOUNICODE_CID },
   { NS_UNICODEENCODER_CONTRACTID_BASE "HZ-GB-2312", &kNS_UNICODETOHZ_CID },
   { NS_UNICODEDECODER_CONTRACTID_BASE "gb18030", &kNS_GB18030TOUNICODE_CID },
   { NS_UNICODEENCODER_CONTRACTID_BASE "gb18030", &kNS_UNICODETOGB18030_CID },
   { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-2022-CN", &kNS_ISO2022CNTOUNICODE_CID },
   { NULL }
 };
 
-static const mozilla::Module kUConvModule = {
+static void
+UConvDataModuleDtor()
+{
+#ifdef DEBUG
+#ifdef XP_WIN
+  mozilla::BlockingResourceBase::Shutdown();
+#endif
+#endif
+}
+
+static const mozilla::Module kUConvDataModule = {
   mozilla::Module::kVersion,
   kUConvCIDs,
   kUConvContracts,
-  kUConvCategories
+  kUConvCategories,
+  nsnull,
+  nsnull,
+  UConvDataModuleDtor
 };
 
-NSMODULE_DEFN(nsUConvModule) = &kUConvModule;
+NSMODULE_DEFN(nsUConvDataModule) = &kUConvDataModule;
--- a/intl/uconv/src/Makefile.in
+++ b/intl/uconv/src/Makefile.in
@@ -71,35 +71,17 @@ CPPSRCS		= \
 		$(NULL)
 
 # Are we targeting x86-32 or x86-64?  If so, we want to include the SSE2
 # version of nsUTF8ToUnicodeSSE2.cpp.
 ifneq (,$(INTEL_ARCHITECTURE))
 CPPSRCS			+= nsUTF8ToUnicodeSSE2.cpp
 endif
 
-LOCAL_INCLUDES	= -I$(srcdir)/../util \
-		  -I$(srcdir)/../ucvlatin \
-		  -I$(srcdir)/../ucvibm \
-		  -I$(srcdir)/../ucvja \
-		  -I$(srcdir)/../ucvtw2 \
-		  -I$(srcdir)/../ucvtw \
-		  -I$(srcdir)/../ucvko \
-		  -I$(srcdir)/../ucvcn \
-		  $(NULL)
-
-SHARED_LIBRARY_LIBS += \
-	../ucvlatin/$(LIB_PREFIX)ucvlatin_s.$(LIB_SUFFIX) \
-	../ucvibm/$(LIB_PREFIX)ucvibm_s.$(LIB_SUFFIX) \
-	../ucvja/$(LIB_PREFIX)ucvja_s.$(LIB_SUFFIX) \
-	../ucvtw2/$(LIB_PREFIX)ucvtw2_s.$(LIB_SUFFIX) \
-	../ucvtw/$(LIB_PREFIX)ucvtw_s.$(LIB_SUFFIX) \
-	../ucvko/$(LIB_PREFIX)ucvko_s.$(LIB_SUFFIX) \
-	../ucvcn/$(LIB_PREFIX)ucvcn_s.$(LIB_SUFFIX) \
-	$(NULL)
+LOCAL_INCLUDES	= -I$(srcdir)/../util
 
 include $(topsrcdir)/config/rules.mk
 
 ifneq (,$(INTEL_ARCHITECTURE))
 # nsUTF8ToUnicodeSSE2.cpp uses SSE2 intrinsics, so we need to pass -msse2 if
 # we're using gcc. (See bug 585538 comment 12.)
 ifdef GNU_CC
 nsUTF8ToUnicodeSSE2.$(OBJ_SUFFIX): CXXFLAGS+=-msse2
--- a/intl/uconv/src/nsUConvModule.cpp
+++ b/intl/uconv/src/nsUConvModule.cpp
@@ -67,499 +67,34 @@
 #include "nsCP1252ToUnicode.h"
 #include "nsMacRomanToUnicode.h"
 #include "nsUTF8ToUnicode.h"
 #include "nsUnicodeToISO88591.h"
 #include "nsUnicodeToCP1252.h"
 #include "nsUnicodeToMacRoman.h"
 #include "nsUnicodeToUTF8.h"
 
-// ucvlatin
-#include "nsUCvLatinCID.h"
-#include "nsUCvLatinDll.h"
-#include "nsAsciiToUnicode.h"
-#include "nsISO88592ToUnicode.h"
-#include "nsISO88593ToUnicode.h"
-#include "nsISO88594ToUnicode.h"
-#include "nsISO88595ToUnicode.h"
-#include "nsISO88596ToUnicode.h"
-#include "nsISO88596EToUnicode.h"
-#include "nsISO88596IToUnicode.h"
-#include "nsISO88597ToUnicode.h"
-#include "nsISO88598ToUnicode.h"
-#include "nsISO88598EToUnicode.h"
-#include "nsISO88598IToUnicode.h"
-#include "nsISO88599ToUnicode.h"
-#include "nsISO885910ToUnicode.h"
-#include "nsISO885913ToUnicode.h"
-#include "nsISO885914ToUnicode.h"
-#include "nsISO885915ToUnicode.h"
-#include "nsISO885916ToUnicode.h"
-#include "nsISOIR111ToUnicode.h"
-#include "nsCP1250ToUnicode.h"
-#include "nsCP1251ToUnicode.h"
-#include "nsCP1253ToUnicode.h"
-#include "nsCP1254ToUnicode.h"
-#include "nsCP1255ToUnicode.h"
-#include "nsCP1256ToUnicode.h"
-#include "nsCP1257ToUnicode.h"
-#include "nsCP1258ToUnicode.h"
-#include "nsCP874ToUnicode.h"
-#include "nsISO885911ToUnicode.h"
-#include "nsTIS620ToUnicode.h"
-#include "nsCP866ToUnicode.h"
-#include "nsKOI8RToUnicode.h"
-#include "nsKOI8UToUnicode.h"
-#include "nsMacCEToUnicode.h"
-#include "nsMacGreekToUnicode.h"
-#include "nsMacTurkishToUnicode.h"
-#include "nsMacCroatianToUnicode.h"
-#include "nsMacRomanianToUnicode.h"
-#include "nsMacCyrillicToUnicode.h"
-#include "nsMacIcelandicToUnicode.h"
-#include "nsGEOSTD8ToUnicode.h"
-#include "nsARMSCII8ToUnicode.h"
-#include "nsTCVN5712ToUnicode.h"
-#include "nsVISCIIToUnicode.h"
-#include "nsVPSToUnicode.h"
-#include "nsUTF7ToUnicode.h"
-#include "nsMUTF7ToUnicode.h"
-#include "nsUCS2BEToUnicode.h"
-#include "nsT61ToUnicode.h"
-#include "nsUserDefinedToUnicode.h"
-#include "nsUnicodeToAscii.h"
-#include "nsUnicodeToISO88592.h"
-#include "nsUnicodeToISO88593.h"
-#include "nsUnicodeToISO88594.h"
-#include "nsUnicodeToISO88595.h"
-#include "nsUnicodeToISO88596.h"
-#include "nsUnicodeToISO88596E.h"
-#include "nsUnicodeToISO88596I.h"
-#include "nsUnicodeToISO88597.h"
-#include "nsUnicodeToISO88598.h"
-#include "nsUnicodeToISO88598E.h"
-#include "nsUnicodeToISO88598I.h"
-#include "nsUnicodeToISO88599.h"
-#include "nsUnicodeToISO885910.h"
-#include "nsUnicodeToISO885913.h"
-#include "nsUnicodeToISO885914.h"
-#include "nsUnicodeToISO885915.h"
-#include "nsUnicodeToISO885916.h"
-#include "nsUnicodeToISOIR111.h"
-#include "nsUnicodeToCP1250.h"
-#include "nsUnicodeToCP1251.h"
-#include "nsUnicodeToCP1253.h"
-#include "nsUnicodeToCP1254.h"
-#include "nsUnicodeToCP1255.h"
-#include "nsUnicodeToCP1256.h"
-#include "nsUnicodeToCP1257.h"
-#include "nsUnicodeToCP1258.h"
-#include "nsUnicodeToCP874.h"
-#include "nsUnicodeToISO885911.h"
-#include "nsUnicodeToTIS620.h"
-#include "nsUnicodeToCP866.h"
-#include "nsUnicodeToKOI8R.h"
-#include "nsUnicodeToKOI8U.h"
-#include "nsUnicodeToMacCE.h"
-#include "nsUnicodeToMacGreek.h"
-#include "nsUnicodeToMacTurkish.h"
-#include "nsUnicodeToMacCroatian.h"
-#include "nsUnicodeToMacRomanian.h"
-#include "nsUnicodeToMacCyrillic.h"
-#include "nsUnicodeToMacIcelandic.h"
-#include "nsUnicodeToGEOSTD8.h"
-#include "nsUnicodeToARMSCII8.h"
-#include "nsUnicodeToTCVN5712.h"
-#include "nsUnicodeToVISCII.h"
-#include "nsUnicodeToVPS.h"
-#include "nsUnicodeToUTF7.h"
-#include "nsUnicodeToMUTF7.h"
-#include "nsUnicodeToUCS2BE.h"
-#include "nsUnicodeToT61.h"
-#include "nsUnicodeToUserDefined.h"
-#include "nsUnicodeToSymbol.h"
-#include "nsUnicodeToZapfDingbat.h"
-#include "nsUnicodeToAdobeEuro.h"
-#include "nsMacArabicToUnicode.h"
-#include "nsMacDevanagariToUnicode.h"
-#include "nsMacFarsiToUnicode.h"
-#include "nsMacGujaratiToUnicode.h"
-#include "nsMacGurmukhiToUnicode.h"
-#include "nsMacHebrewToUnicode.h"
-#include "nsUnicodeToMacArabic.h"
-#include "nsUnicodeToMacDevanagari.h"
-#include "nsUnicodeToMacFarsi.h"
-#include "nsUnicodeToMacGujarati.h"
-#include "nsUnicodeToMacGurmukhi.h"
-#include "nsUnicodeToMacHebrew.h"
-#include "nsUnicodeToTSCII.h"
-
-// ucvibm
-#include "nsUCvIBMCID.h"
-#include "nsUCvIBMDll.h"
-#include "nsCP850ToUnicode.h"
-#include "nsCP852ToUnicode.h"
-#include "nsCP855ToUnicode.h"
-#include "nsCP857ToUnicode.h"
-#include "nsCP862ToUnicode.h"
-#include "nsCP864ToUnicode.h"
-#include "nsCP864iToUnicode.h"
-#ifdef XP_OS2
-#include "nsCP869ToUnicode.h"
-#include "nsCP1125ToUnicode.h"
-#include "nsCP1131ToUnicode.h"
-#endif
-#include "nsUnicodeToCP850.h"
-#include "nsUnicodeToCP852.h"
-#include "nsUnicodeToCP855.h"
-#include "nsUnicodeToCP857.h"
-#include "nsUnicodeToCP862.h"
-#include "nsUnicodeToCP864.h"
-#include "nsUnicodeToCP864i.h"
-#ifdef XP_OS2
-#include "nsUnicodeToCP869.h"
-#include "nsUnicodeToCP1125.h"
-#include "nsUnicodeToCP1131.h"
-#endif
-
-// ucvja
-#include "nsUCVJACID.h"
-#include "nsUCVJA2CID.h"
-#include "nsUCVJADll.h"
-#include "nsJapaneseToUnicode.h"
-#include "nsUnicodeToSJIS.h"
-#include "nsUnicodeToEUCJP.h"
-#include "nsUnicodeToISO2022JP.h"
-#include "nsUnicodeToJISx0201.h"
-
-// ucvtw2
-#include "nsUCvTW2CID.h"
-#include "nsUCvTW2Dll.h"
-#include "nsEUCTWToUnicode.h"
-#include "nsUnicodeToEUCTW.h"
-
-// ucvtw
-#include "nsUCvTWCID.h"
-#include "nsUCvTWDll.h"
-#include "nsBIG5ToUnicode.h"
-#include "nsUnicodeToBIG5.h"
-#include "nsBIG5HKSCSToUnicode.h"
-#include "nsUnicodeToBIG5HKSCS.h"
-#include "nsUnicodeToHKSCS.h"
-
-// ucvko
-#include "nsUCvKOCID.h"
-#include "nsUCvKODll.h"
-#include "nsEUCKRToUnicode.h"
-#include "nsUnicodeToEUCKR.h"
-#include "nsJohabToUnicode.h"
-#include "nsUnicodeToJohab.h"
-#include "nsCP949ToUnicode.h"
-#include "nsUnicodeToCP949.h"
-#include "nsISO2022KRToUnicode.h"
-
-// ucvcn
-#include "nsUCvCnCID.h"
-#include "nsUCvCnDll.h"
-#include "nsHZToUnicode.h"
-#include "nsUnicodeToHZ.h"
-#include "nsGBKToUnicode.h"
-#include "nsUnicodeToGBK.h"
-#include "nsGB2312ToUnicodeV2.h"
-#include "nsUnicodeToGB2312V2.h"
-#include "nsISO2022CNToUnicode.h"
-#include "nsUnicodeToISO2022CN.h"
-#include "gbku.h"
-
 NS_CONVERTER_REGISTRY_START
 NS_UCONV_REG_UNREG("ISO-8859-1", NS_ISO88591TOUNICODE_CID, NS_UNICODETOISO88591_CID)
 NS_UCONV_REG_UNREG("windows-1252", NS_CP1252TOUNICODE_CID, NS_UNICODETOCP1252_CID)
 NS_UCONV_REG_UNREG("x-mac-roman", NS_MACROMANTOUNICODE_CID, NS_UNICODETOMACROMAN_CID)
 NS_UCONV_REG_UNREG("UTF-8", NS_UTF8TOUNICODE_CID, NS_UNICODETOUTF8_CID)
 
-  // ucvlatin
-NS_UCONV_REG_UNREG("us-ascii", NS_ASCIITOUNICODE_CID, NS_UNICODETOASCII_CID)
-NS_UCONV_REG_UNREG("ISO-8859-2", NS_ISO88592TOUNICODE_CID, NS_UNICODETOISO88592_CID)
-NS_UCONV_REG_UNREG("ISO-8859-3", NS_ISO88593TOUNICODE_CID, NS_UNICODETOISO88593_CID)
-NS_UCONV_REG_UNREG("ISO-8859-4", NS_ISO88594TOUNICODE_CID, NS_UNICODETOISO88594_CID)
-NS_UCONV_REG_UNREG("ISO-8859-5", NS_ISO88595TOUNICODE_CID, NS_UNICODETOISO88595_CID)
-NS_UCONV_REG_UNREG("ISO-8859-6", NS_ISO88596TOUNICODE_CID, NS_UNICODETOISO88596_CID)
-NS_UCONV_REG_UNREG("ISO-8859-6-I", NS_ISO88596ITOUNICODE_CID, NS_UNICODETOISO88596I_CID)
-NS_UCONV_REG_UNREG("ISO-8859-6-E", NS_ISO88596ETOUNICODE_CID, NS_UNICODETOISO88596E_CID)
-NS_UCONV_REG_UNREG("ISO-8859-7", NS_ISO88597TOUNICODE_CID, NS_UNICODETOISO88597_CID)
-NS_UCONV_REG_UNREG("ISO-8859-8", NS_ISO88598TOUNICODE_CID, NS_UNICODETOISO88598_CID)
-NS_UCONV_REG_UNREG("ISO-8859-8-I", NS_ISO88598ITOUNICODE_CID, NS_UNICODETOISO88598I_CID)
-NS_UCONV_REG_UNREG("ISO-8859-8-E", NS_ISO88598ETOUNICODE_CID, NS_UNICODETOISO88598E_CID)
-NS_UCONV_REG_UNREG("ISO-8859-9", NS_ISO88599TOUNICODE_CID, NS_UNICODETOISO88599_CID)
-NS_UCONV_REG_UNREG("ISO-8859-10", NS_ISO885910TOUNICODE_CID, NS_UNICODETOISO885910_CID)
-NS_UCONV_REG_UNREG("ISO-8859-13", NS_ISO885913TOUNICODE_CID, NS_UNICODETOISO885913_CID)
-NS_UCONV_REG_UNREG("ISO-8859-14", NS_ISO885914TOUNICODE_CID, NS_UNICODETOISO885914_CID)
-NS_UCONV_REG_UNREG("ISO-8859-15", NS_ISO885915TOUNICODE_CID, NS_UNICODETOISO885915_CID)
-NS_UCONV_REG_UNREG("ISO-8859-16", NS_ISO885916TOUNICODE_CID, NS_UNICODETOISO885916_CID)
-NS_UCONV_REG_UNREG("ISO-IR-111", NS_ISOIR111TOUNICODE_CID, NS_UNICODETOISOIR111_CID)
-NS_UCONV_REG_UNREG("windows-1250", NS_CP1250TOUNICODE_CID, NS_UNICODETOCP1250_CID)
-NS_UCONV_REG_UNREG("windows-1251", NS_CP1251TOUNICODE_CID, NS_UNICODETOCP1251_CID)
-NS_UCONV_REG_UNREG("windows-1253", NS_CP1253TOUNICODE_CID, NS_UNICODETOCP1253_CID)
-NS_UCONV_REG_UNREG("windows-1254", NS_CP1254TOUNICODE_CID, NS_UNICODETOCP1254_CID)
-NS_UCONV_REG_UNREG("windows-1255", NS_CP1255TOUNICODE_CID, NS_UNICODETOCP1255_CID)
-NS_UCONV_REG_UNREG("windows-1256", NS_CP1256TOUNICODE_CID, NS_UNICODETOCP1256_CID)
-NS_UCONV_REG_UNREG("windows-1257", NS_CP1257TOUNICODE_CID, NS_UNICODETOCP1257_CID)
-NS_UCONV_REG_UNREG("windows-1258", NS_CP1258TOUNICODE_CID, NS_UNICODETOCP1258_CID)
-NS_UCONV_REG_UNREG("TIS-620", NS_TIS620TOUNICODE_CID, NS_UNICODETOTIS620_CID)
-NS_UCONV_REG_UNREG("windows-874", NS_CP874TOUNICODE_CID, NS_UNICODETOCP874_CID)
-NS_UCONV_REG_UNREG("ISO-8859-11", NS_ISO885911TOUNICODE_CID, NS_UNICODETOISO885911_CID)
-NS_UCONV_REG_UNREG("IBM866", NS_CP866TOUNICODE_CID, NS_UNICODETOCP866_CID)
-NS_UCONV_REG_UNREG("KOI8-R", NS_KOI8RTOUNICODE_CID, NS_UNICODETOKOI8R_CID)
-NS_UCONV_REG_UNREG("KOI8-U", NS_KOI8UTOUNICODE_CID, NS_UNICODETOKOI8U_CID)
-NS_UCONV_REG_UNREG("x-mac-ce", NS_MACCETOUNICODE_CID, NS_UNICODETOMACCE_CID)
-NS_UCONV_REG_UNREG("x-mac-greek", NS_MACGREEKTOUNICODE_CID, NS_UNICODETOMACGREEK_CID)
-NS_UCONV_REG_UNREG("x-mac-turkish", NS_MACTURKISHTOUNICODE_CID, NS_UNICODETOMACTURKISH_CID)
-NS_UCONV_REG_UNREG("x-mac-croatian", NS_MACCROATIANTOUNICODE_CID, NS_UNICODETOMACCROATIAN_CID)
-NS_UCONV_REG_UNREG("x-mac-romanian", NS_MACROMANIANTOUNICODE_CID, NS_UNICODETOMACROMANIAN_CID)
-NS_UCONV_REG_UNREG("x-mac-cyrillic", NS_MACCYRILLICTOUNICODE_CID, NS_UNICODETOMACCYRILLIC_CID)
-NS_UCONV_REG_UNREG("x-mac-icelandic", NS_MACICELANDICTOUNICODE_CID, NS_UNICODETOMACICELANDIC_CID)
-NS_UCONV_REG_UNREG("GEOSTD8", NS_GEOSTD8TOUNICODE_CID, NS_UNICODETOGEOSTD8_CID)
-NS_UCONV_REG_UNREG("armscii-8", NS_ARMSCII8TOUNICODE_CID, NS_UNICODETOARMSCII8_CID)
-NS_UCONV_REG_UNREG("x-viet-tcvn5712", NS_TCVN5712TOUNICODE_CID, NS_UNICODETOTCVN5712_CID)
-NS_UCONV_REG_UNREG("VISCII", NS_VISCIITOUNICODE_CID, NS_UNICODETOVISCII_CID)
-NS_UCONV_REG_UNREG("x-viet-vps", NS_VPSTOUNICODE_CID, NS_UNICODETOVPS_CID)
-NS_UCONV_REG_UNREG("UTF-7", NS_UTF7TOUNICODE_CID, NS_UNICODETOUTF7_CID)
-NS_UCONV_REG_UNREG("x-imap4-modified-utf7", NS_MUTF7TOUNICODE_CID, NS_UNICODETOMUTF7_CID)
-NS_UCONV_REG_UNREG("UTF-16", NS_UTF16TOUNICODE_CID, NS_UNICODETOUTF16_CID)
-NS_UCONV_REG_UNREG("UTF-16BE", NS_UTF16BETOUNICODE_CID, NS_UNICODETOUTF16BE_CID)
-NS_UCONV_REG_UNREG("UTF-16LE", NS_UTF16LETOUNICODE_CID, NS_UNICODETOUTF16LE_CID)
-NS_UCONV_REG_UNREG("T.61-8bit", NS_T61TOUNICODE_CID, NS_UNICODETOT61_CID)
-NS_UCONV_REG_UNREG("x-user-defined", NS_USERDEFINEDTOUNICODE_CID, NS_UNICODETOUSERDEFINED_CID)
-NS_UCONV_REG_UNREG("x-mac-arabic" , NS_MACARABICTOUNICODE_CID, NS_UNICODETOMACARABIC_CID)
-NS_UCONV_REG_UNREG("x-mac-devanagari" , NS_MACDEVANAGARITOUNICODE_CID, NS_UNICODETOMACDEVANAGARI_CID)
-NS_UCONV_REG_UNREG("x-mac-farsi" , NS_MACFARSITOUNICODE_CID, NS_UNICODETOMACFARSI_CID)
-NS_UCONV_REG_UNREG("x-mac-gurmukhi" , NS_MACGURMUKHITOUNICODE_CID, NS_UNICODETOMACGURMUKHI_CID)
-NS_UCONV_REG_UNREG("x-mac-gujarati" , NS_MACGUJARATITOUNICODE_CID, NS_UNICODETOMACGUJARATI_CID)
-NS_UCONV_REG_UNREG("x-mac-hebrew" , NS_MACHEBREWTOUNICODE_CID, NS_UNICODETOMACHEBREW_CID)
-
-NS_UCONV_REG_UNREG_ENCODER("Adobe-Symbol-Encoding" , NS_UNICODETOSYMBOL_CID)
-NS_UCONV_REG_UNREG_ENCODER("x-zapf-dingbats" , NS_UNICODETOZAPFDINGBATS_CID)
-NS_UCONV_REG_UNREG_ENCODER("x-tscii",  NS_UNICODETOTSCII_CID)
-NS_UCONV_REG_UNREG_ENCODER("x-tamilttf-0",  NS_UNICODETOTAMILTTF_CID)
-
-  // ucvibm
-NS_UCONV_REG_UNREG("IBM850", NS_CP850TOUNICODE_CID, NS_UNICODETOCP850_CID)
-NS_UCONV_REG_UNREG("IBM852", NS_CP852TOUNICODE_CID, NS_UNICODETOCP852_CID)
-NS_UCONV_REG_UNREG("IBM855", NS_CP855TOUNICODE_CID, NS_UNICODETOCP855_CID)
-NS_UCONV_REG_UNREG("IBM857", NS_CP857TOUNICODE_CID, NS_UNICODETOCP857_CID)
-NS_UCONV_REG_UNREG("IBM862", NS_CP862TOUNICODE_CID, NS_UNICODETOCP862_CID)
-NS_UCONV_REG_UNREG("IBM864", NS_CP864TOUNICODE_CID, NS_UNICODETOCP864_CID)
-NS_UCONV_REG_UNREG("IBM864i", NS_CP864ITOUNICODE_CID, NS_UNICODETOCP864I_CID)
-#ifdef XP_OS2
-NS_UCONV_REG_UNREG("IBM869", NS_CP869TOUNICODE_CID, NS_UNICODETOCP869_CID)
-NS_UCONV_REG_UNREG("IBM1125", NS_CP1125TOUNICODE_CID, NS_UNICODETOCP1125_CID)
-NS_UCONV_REG_UNREG("IBM1131", NS_CP1131TOUNICODE_CID, NS_UNICODETOCP1131_CID)
-#endif
-
-    // ucvja
-NS_UCONV_REG_UNREG("Shift_JIS", NS_SJISTOUNICODE_CID, NS_UNICODETOSJIS_CID)
-NS_UCONV_REG_UNREG("ISO-2022-JP", NS_ISO2022JPTOUNICODE_CID, NS_UNICODETOISO2022JP_CID)
-NS_UCONV_REG_UNREG("EUC-JP", NS_EUCJPTOUNICODE_CID, NS_UNICODETOEUCJP_CID)
-  
-NS_UCONV_REG_UNREG_ENCODER("jis_0201" , NS_UNICODETOJISX0201_CID)
-
-    // ucvtw2
-NS_UCONV_REG_UNREG("x-euc-tw", NS_EUCTWTOUNICODE_CID, NS_UNICODETOEUCTW_CID)
-
-    // ucvtw
-NS_UCONV_REG_UNREG("Big5", NS_BIG5TOUNICODE_CID, NS_UNICODETOBIG5_CID)
-NS_UCONV_REG_UNREG("Big5-HKSCS", NS_BIG5HKSCSTOUNICODE_CID, NS_UNICODETOBIG5HKSCS_CID)
-  
-NS_UCONV_REG_UNREG_ENCODER("hkscs-1" , NS_UNICODETOHKSCS_CID)
-
-    // ucvko
-NS_UCONV_REG_UNREG("EUC-KR", NS_EUCKRTOUNICODE_CID, NS_UNICODETOEUCKR_CID)
-NS_UCONV_REG_UNREG("x-johab", NS_JOHABTOUNICODE_CID, NS_UNICODETOJOHAB_CID)
-NS_UCONV_REG_UNREG("x-windows-949", NS_CP949TOUNICODE_CID, NS_UNICODETOCP949_CID)
-NS_UCONV_REG_UNREG_DECODER("ISO-2022-KR", NS_ISO2022KRTOUNICODE_CID)
-
-// ucvcn
-NS_UCONV_REG_UNREG("GB2312", NS_GB2312TOUNICODE_CID, NS_UNICODETOGB2312_CID)
-NS_UCONV_REG_UNREG("gbk", NS_GBKTOUNICODE_CID, NS_UNICODETOGBK_CID)
-NS_UCONV_REG_UNREG("HZ-GB-2312", NS_HZTOUNICODE_CID, NS_UNICODETOHZ_CID)
-NS_UCONV_REG_UNREG("gb18030", NS_GB18030TOUNICODE_CID, NS_UNICODETOGB18030_CID)
-NS_UCONV_REG_UNREG_DECODER("ISO-2022-CN", NS_ISO2022CNTOUNICODE_CID)
-
 { NS_TITLE_BUNDLE_CATEGORY, "chrome://global/locale/charsetTitles.properties", "" },
 { NS_DATA_BUNDLE_CATEGORY, "resource://gre-resources/charsetData.properties", "" },
   
 NS_CONVERTER_REGISTRY_END
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToUTF8)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF8ToUnicode)
 
-// ucvlatin
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF7ToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsMUTF7ToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF16ToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF16BEToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF16LEToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToUTF7)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToMUTF7)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToUTF16BE)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToUTF16LE)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToUTF16)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToTSCII)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToTamilTTF)
-
-// ucvibm
-
-// ucvja
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsShiftJISToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsEUCJPToUnicodeV2)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsISO2022JPToUnicodeV2)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToISO2022JP)
-
-// ucvtw2
-
-// ucvtw
-
-// ucvko
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsISO2022KRToUnicode)
-
-// ucvcn
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsGB2312ToUnicodeV2)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToGB2312V2)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsGBKToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToGBK)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsHZToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToHZ)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsGB18030ToUnicode)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeToGB18030)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsISO2022CNToUnicode)
-
 
 //----------------------------------------------------------------------------
 // Global functions and data [declaration]
 
-// ucvja
-const PRUint16 g_uf0201Mapping[] = {
-#include "jis0201.uf"
-};
-
-const PRUint16 g_uf0201GLMapping[] = {
-#include "jis0201gl.uf"
-};
-
-const PRUint16 g_uf0208Mapping[] = {
-#include "jis0208.uf"
-};
-
-const PRUint16 g_uf0208extMapping[] = {
-#include "jis0208ext.uf"
-};
-
-// ucvtw2
-const PRUint16 g_ufCNS1MappingTable[] = {
-#include "cns_1.uf"
-};
-
-const PRUint16 g_ufCNS2MappingTable[] = {
-#include "cns_2.uf"
-};
-
-const PRUint16 g_ufCNS3MappingTable[] = {
-#include "cns3.uf"
-};
-
-const PRUint16 g_ufCNS4MappingTable[] = {
-#include "cns4.uf"
-};
-
-const PRUint16 g_ufCNS5MappingTable[] = {
-#include "cns5.uf"
-};
-
-const PRUint16 g_ufCNS6MappingTable[] = {
-#include "cns6.uf"
-};
-
-const PRUint16 g_ufCNS7MappingTable[] = {
-#include "cns7.uf"
-};
-
-const PRUint16 g_utCNS1MappingTable[] = {
-#include "cns_1.ut"
-};
-
-const PRUint16 g_utCNS2MappingTable[] = {
-#include "cns_2.ut"
-};
-
-const PRUint16 g_utCNS3MappingTable[] = {
-#include "cns3.ut"
-};
-
-const PRUint16 g_utCNS4MappingTable[] = {
-#include "cns4.ut"
-};
-
-const PRUint16 g_utCNS5MappingTable[] = {
-#include "cns5.ut"
-};
-
-const PRUint16 g_utCNS6MappingTable[] = {
-#include "cns6.ut"
-};
-
-const PRUint16 g_utCNS7MappingTable[] = {
-#include "cns7.ut"
-};
-
-const PRUint16 g_ASCIIMappingTable[] = {
-  0x0001, 0x0004, 0x0005, 0x0008, 0x0000, 0x0000, 0x007F, 0x0000
-};
-
-// ucvtw
-const PRUint16 g_ufBig5Mapping[] = {
-#include "big5.uf"
-};
-
-const PRUint16 g_utBIG5Mapping[] = {
-#include "big5.ut"
-};
-
-const PRUint16 g_ufBig5HKSCSMapping[] = {
-#include "hkscs.uf"
-};
-
-const PRUint16 g_ASCIIMapping[] = {
-  0x0001, 0x0004, 0x0005, 0x0008, 0x0000, 0x0000, 0x007F, 0x0000
-};
-
-const PRUint16 g_utBig5HKSCSMapping[] = {
-#include "hkscs.ut"
-};
-
-// ucvko
-const PRUint16 g_utKSC5601Mapping[] = {
-#include "u20kscgl.ut"
-};
-
-const PRUint16 g_ufKSC5601Mapping[] = {
-#include "u20kscgl.uf"
-};
-
-const PRUint16 g_ucvko_AsciiMapping[] = {
-  0x0001, 0x0004, 0x0005, 0x0008, 0x0000, 0x0000, 0x007F, 0x0000
-};
-
-const PRUint16 g_HangulNullMapping[] ={
-  0x0001, 0x0004, 0x0005, 0x0008, 0x0000, 0xAC00, 0xD7A3, 0xAC00
-};
-
-const PRUint16 g_ufJohabJamoMapping[] ={   
-#include "johabjamo.uf"
-};
-
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsCharsetConverterManager)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsTextToSubURI)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsUTF8ConverterService)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsConverterInputStream)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsConverterOutputStream)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsScriptableUnicodeConverter)
 
 NS_DEFINE_NAMED_CID(NS_ICHARSETCONVERTERMANAGER_CID);
@@ -571,382 +106,32 @@ NS_DEFINE_NAMED_CID(NS_UTF8CONVERTERSERV
 NS_DEFINE_NAMED_CID(NS_ISO88591TOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_CP1252TOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_MACROMANTOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_UTF8TOUNICODE_CID);
 NS_DEFINE_NAMED_CID(NS_UNICODETOISO88591_CID);
 NS_DEFINE_NAMED_CID(NS_UNICODETOCP1252_CID);
 NS_DEFINE_NAMED_CID(NS_UNICODETOMACROMAN_CID);
 NS_DEFINE_NAMED_CID(NS_UNICODETOUTF8_CID);
-NS_DEFINE_NAMED_CID(NS_ASCIITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88592TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88593TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88594TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88595TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88596TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88596ITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88596ETOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88597TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88598TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88598ITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88598ETOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO88599TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO885910TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO885913TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO885914TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO885915TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO885916TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISOIR111TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1250TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1251TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1253TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1254TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1255TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1256TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1257TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1258TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_TIS620TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ISO885911TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP874TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP866TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_KOI8RTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_KOI8UTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACCETOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACGREEKTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACTURKISHTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACCROATIANTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACROMANIANTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACCYRILLICTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACICELANDICTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_GEOSTD8TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_ARMSCII8TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_TCVN5712TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_VISCIITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_VPSTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UTF7TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MUTF7TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UTF16TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UTF16BETOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UTF16LETOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_T61TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_USERDEFINEDTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACARABICTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACDEVANAGARITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACFARSITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACGURMUKHITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACGUJARATITOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_MACHEBREWTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOASCII_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88592_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88593_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88594_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88595_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88596_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88596I_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88596E_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88597_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88598_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88598I_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88598E_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO88599_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO885910_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO885913_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO885914_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO885915_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO885916_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISOIR111_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1250_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1251_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1253_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1254_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1255_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1256_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1257_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1258_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOTIS620_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO885911_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP874_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP866_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOKOI8R_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOKOI8U_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACCE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACGREEK_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACTURKISH_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACCROATIAN_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACROMANIAN_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACCYRILLIC_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACICELANDIC_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOGEOSTD8_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOARMSCII8_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOTCVN5712_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOVISCII_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOVPS_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOUTF7_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMUTF7_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOUTF16BE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOUTF16LE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOUTF16_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOT61_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOUSERDEFINED_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOSYMBOL_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOZAPFDINGBATS_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOADOBEEURO_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACARABIC_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACDEVANAGARI_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACFARSI_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACGURMUKHI_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACGUJARATI_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOMACHEBREW_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOTSCII_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOTAMILTTF_CID);
-NS_DEFINE_NAMED_CID(NS_CP850TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP852TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP855TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP857TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP862TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP864TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP864ITOUNICODE_CID);
-#ifdef XP_OS2
-NS_DEFINE_NAMED_CID(NS_CP869TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1125TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_CP1131TOUNICODE_CID);
-#endif
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP850_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP852_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP855_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP857_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP862_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP864_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP864I_CID);
-#ifdef XP_OS2
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP869_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1125_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP1131_CID);
-#endif
-NS_DEFINE_NAMED_CID(NS_SJISTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_EUCJPTOUNICODE_CID);
-NS_DEFINE_NAMED_CID( NS_ISO2022JPTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOSJIS_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOEUCJP_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOISO2022JP_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOJISX0201_CID);
-NS_DEFINE_NAMED_CID(NS_EUCTWTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOEUCTW_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOBIG5_CID);
-NS_DEFINE_NAMED_CID(NS_BIG5TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOBIG5HKSCS_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOHKSCS_CID);
-NS_DEFINE_NAMED_CID(NS_BIG5HKSCSTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_EUCKRTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOEUCKR_CID);
-NS_DEFINE_NAMED_CID(NS_JOHABTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOJOHAB_CID);
-NS_DEFINE_NAMED_CID(NS_CP949TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOCP949_CID);
-NS_DEFINE_NAMED_CID(NS_ISO2022KRTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_GB2312TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOGB2312_CID);
-NS_DEFINE_NAMED_CID(NS_GBKTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOGBK_CID);
-NS_DEFINE_NAMED_CID(NS_HZTOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOHZ_CID);
-NS_DEFINE_NAMED_CID(NS_GB18030TOUNICODE_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODETOGB18030_CID);
-NS_DEFINE_NAMED_CID(NS_ISO2022CNTOUNICODE_CID);
 
 static const mozilla::Module::CIDEntry kUConvCIDs[] = {
   { &kNS_ICHARSETCONVERTERMANAGER_CID, false, NULL, nsCharsetConverterManagerConstructor },
   { &kNS_TEXTTOSUBURI_CID, false, NULL, nsTextToSubURIConstructor },
   { &kNS_CONVERTERINPUTSTREAM_CID, false, NULL, nsConverterInputStreamConstructor },
   { &kNS_CONVERTEROUTPUTSTREAM_CID, false, NULL, nsConverterOutputStreamConstructor },
   { &kNS_ISCRIPTABLEUNICODECONVERTER_CID, false, NULL, nsScriptableUnicodeConverterConstructor },
   { &kNS_UTF8CONVERTERSERVICE_CID, false, NULL, nsUTF8ConverterServiceConstructor },
   { &kNS_ISO88591TOUNICODE_CID, false, NULL, nsISO88591ToUnicodeConstructor },
   { &kNS_CP1252TOUNICODE_CID, false, NULL, nsCP1252ToUnicodeConstructor },
   { &kNS_MACROMANTOUNICODE_CID, false, NULL, nsMacRomanToUnicodeConstructor },
   { &kNS_UTF8TOUNICODE_CID, false, NULL, nsUTF8ToUnicodeConstructor },
   { &kNS_UNICODETOISO88591_CID, false, NULL, nsUnicodeToISO88591Constructor },
   { &kNS_UNICODETOCP1252_CID, false, NULL, nsUnicodeToCP1252Constructor },
   { &kNS_UNICODETOMACROMAN_CID, false, NULL, nsUnicodeToMacRomanConstructor },
   { &kNS_UNICODETOUTF8_CID, false, NULL, nsUnicodeToUTF8Constructor },
-  { &kNS_ASCIITOUNICODE_CID, false, NULL, nsAsciiToUnicodeConstructor },
-  { &kNS_ISO88592TOUNICODE_CID, false, NULL, nsISO88592ToUnicodeConstructor },
-  { &kNS_ISO88593TOUNICODE_CID, false, NULL, nsISO88593ToUnicodeConstructor },
-  { &kNS_ISO88594TOUNICODE_CID, false, NULL, nsISO88594ToUnicodeConstructor },
-  { &kNS_ISO88595TOUNICODE_CID, false, NULL, nsISO88595ToUnicodeConstructor },
-  { &kNS_ISO88596TOUNICODE_CID, false, NULL, nsISO88596ToUnicodeConstructor },
-  { &kNS_ISO88596ITOUNICODE_CID, false, NULL, nsISO88596IToUnicodeConstructor },
-  { &kNS_ISO88596ETOUNICODE_CID, false, NULL, nsISO88596EToUnicodeConstructor },
-  { &kNS_ISO88597TOUNICODE_CID, false, NULL, nsISO88597ToUnicodeConstructor },
-  { &kNS_ISO88598TOUNICODE_CID, false, NULL, nsISO88598ToUnicodeConstructor },
-  { &kNS_ISO88598ITOUNICODE_CID, false, NULL, nsISO88598IToUnicodeConstructor },
-  { &kNS_ISO88598ETOUNICODE_CID, false, NULL, nsISO88598EToUnicodeConstructor },
-  { &kNS_ISO88599TOUNICODE_CID, false, NULL, nsISO88599ToUnicodeConstructor },
-  { &kNS_ISO885910TOUNICODE_CID, false, NULL, nsISO885910ToUnicodeConstructor },
-  { &kNS_ISO885913TOUNICODE_CID, false, NULL, nsISO885913ToUnicodeConstructor },
-  { &kNS_ISO885914TOUNICODE_CID, false, NULL, nsISO885914ToUnicodeConstructor },
-  { &kNS_ISO885915TOUNICODE_CID, false, NULL, nsISO885915ToUnicodeConstructor },
-  { &kNS_ISO885916TOUNICODE_CID, false, NULL, nsISO885916ToUnicodeConstructor },
-  { &kNS_ISOIR111TOUNICODE_CID, false, NULL, nsISOIR111ToUnicodeConstructor },
-  { &kNS_CP1250TOUNICODE_CID, false, NULL, nsCP1250ToUnicodeConstructor },
-  { &kNS_CP1251TOUNICODE_CID, false, NULL, nsCP1251ToUnicodeConstructor },
-  { &kNS_CP1253TOUNICODE_CID, false, NULL, nsCP1253ToUnicodeConstructor },
-  { &kNS_CP1254TOUNICODE_CID, false, NULL, nsCP1254ToUnicodeConstructor },
-  { &kNS_CP1255TOUNICODE_CID, false, NULL, nsCP1255ToUnicodeConstructor },
-  { &kNS_CP1256TOUNICODE_CID, false, NULL, nsCP1256ToUnicodeConstructor },
-  { &kNS_CP1257TOUNICODE_CID, false, NULL, nsCP1257ToUnicodeConstructor },
-  { &kNS_CP1258TOUNICODE_CID, false, NULL, nsCP1258ToUnicodeConstructor },
-  { &kNS_TIS620TOUNICODE_CID, false, NULL, nsTIS620ToUnicodeConstructor },
-  { &kNS_ISO885911TOUNICODE_CID, false, NULL, nsISO885911ToUnicodeConstructor },
-  { &kNS_CP874TOUNICODE_CID, false, NULL, nsCP874ToUnicodeConstructor },
-  { &kNS_CP866TOUNICODE_CID, false, NULL, nsCP866ToUnicodeConstructor },
-  { &kNS_KOI8RTOUNICODE_CID, false, NULL, nsKOI8RToUnicodeConstructor },
-  { &kNS_KOI8UTOUNICODE_CID, false, NULL, nsKOI8UToUnicodeConstructor },
-  { &kNS_MACCETOUNICODE_CID, false, NULL, nsMacCEToUnicodeConstructor },
-  { &kNS_MACGREEKTOUNICODE_CID, false, NULL, nsMacGreekToUnicodeConstructor },
-  { &kNS_MACTURKISHTOUNICODE_CID, false, NULL, nsMacTurkishToUnicodeConstructor },
-  { &kNS_MACCROATIANTOUNICODE_CID, false, NULL, nsMacCroatianToUnicodeConstructor },
-  { &kNS_MACROMANIANTOUNICODE_CID, false, NULL, nsMacRomanianToUnicodeConstructor },
-  { &kNS_MACCYRILLICTOUNICODE_CID, false, NULL, nsMacCyrillicToUnicodeConstructor },
-  { &kNS_MACICELANDICTOUNICODE_CID, false, NULL, nsMacIcelandicToUnicodeConstructor },
-  { &kNS_GEOSTD8TOUNICODE_CID, false, NULL, nsGEOSTD8ToUnicodeConstructor },
-  { &kNS_ARMSCII8TOUNICODE_CID, false, NULL, nsARMSCII8ToUnicodeConstructor },
-  { &kNS_TCVN5712TOUNICODE_CID, false, NULL, nsTCVN5712ToUnicodeConstructor },
-  { &kNS_VISCIITOUNICODE_CID, false, NULL, nsVISCIIToUnicodeConstructor },
-  { &kNS_VPSTOUNICODE_CID, false, NULL, nsVPSToUnicodeConstructor },
-  { &kNS_UTF7TOUNICODE_CID, false, NULL, nsUTF7ToUnicodeConstructor },
-  { &kNS_MUTF7TOUNICODE_CID, false, NULL, nsMUTF7ToUnicodeConstructor },
-  { &kNS_UTF16TOUNICODE_CID, false, NULL, nsUTF16ToUnicodeConstructor },
-  { &kNS_UTF16BETOUNICODE_CID, false, NULL, nsUTF16BEToUnicodeConstructor },
-  { &kNS_UTF16LETOUNICODE_CID, false, NULL, nsUTF16LEToUnicodeConstructor },
-  { &kNS_T61TOUNICODE_CID, false, NULL, nsT61ToUnicodeConstructor },
-  { &kNS_USERDEFINEDTOUNICODE_CID, false, NULL, nsUserDefinedToUnicodeConstructor },
-  { &kNS_MACARABICTOUNICODE_CID, false, NULL, nsMacArabicToUnicodeConstructor },
-  { &kNS_MACDEVANAGARITOUNICODE_CID, false, NULL, nsMacDevanagariToUnicodeConstructor },
-  { &kNS_MACFARSITOUNICODE_CID, false, NULL, nsMacFarsiToUnicodeConstructor },
-  { &kNS_MACGURMUKHITOUNICODE_CID, false, NULL, nsMacGurmukhiToUnicodeConstructor },
-  { &kNS_MACGUJARATITOUNICODE_CID, false, NULL, nsMacGujaratiToUnicodeConstructor },
-  { &kNS_MACHEBREWTOUNICODE_CID, false, NULL, nsMacHebrewToUnicodeConstructor },
-  { &kNS_UNICODETOASCII_CID, false, NULL, nsUnicodeToAsciiConstructor },
-  { &kNS_UNICODETOISO88592_CID, false, NULL, nsUnicodeToISO88592Constructor },
-  { &kNS_UNICODETOISO88593_CID, false, NULL, nsUnicodeToISO88593Constructor },
-  { &kNS_UNICODETOISO88594_CID, false, NULL, nsUnicodeToISO88594Constructor },
-  { &kNS_UNICODETOISO88595_CID, false, NULL, nsUnicodeToISO88595Constructor },
-  { &kNS_UNICODETOISO88596_CID, false, NULL, nsUnicodeToISO88596Constructor },
-  { &kNS_UNICODETOISO88596I_CID, false, NULL, nsUnicodeToISO88596IConstructor },
-  { &kNS_UNICODETOISO88596E_CID, false, NULL, nsUnicodeToISO88596EConstructor },
-  { &kNS_UNICODETOISO88597_CID, false, NULL, nsUnicodeToISO88597Constructor },
-  { &kNS_UNICODETOISO88598_CID, false, NULL, nsUnicodeToISO88598Constructor },
-  { &kNS_UNICODETOISO88598I_CID, false, NULL, nsUnicodeToISO88598IConstructor },
-  { &kNS_UNICODETOISO88598E_CID, false, NULL, nsUnicodeToISO88598EConstructor },
-  { &kNS_UNICODETOISO88599_CID, false, NULL, nsUnicodeToISO88599Constructor },
-  { &kNS_UNICODETOISO885910_CID, false, NULL, nsUnicodeToISO885910Constructor },
-  { &kNS_UNICODETOISO885913_CID, false, NULL, nsUnicodeToISO885913Constructor },
-  { &kNS_UNICODETOISO885914_CID, false, NULL, nsUnicodeToISO885914Constructor },
-  { &kNS_UNICODETOISO885915_CID, false, NULL, nsUnicodeToISO885915Constructor },
-  { &kNS_UNICODETOISO885916_CID, false, NULL, nsUnicodeToISO885916Constructor },
-  { &kNS_UNICODETOISOIR111_CID, false, NULL, nsUnicodeToISOIR111Constructor },
-  { &kNS_UNICODETOCP1250_CID, false, NULL, nsUnicodeToCP1250Constructor },
-  { &kNS_UNICODETOCP1251_CID, false, NULL, nsUnicodeToCP1251Constructor },
-  { &kNS_UNICODETOCP1253_CID, false, NULL, nsUnicodeToCP1253Constructor },
-  { &kNS_UNICODETOCP1254_CID, false, NULL, nsUnicodeToCP1254Constructor },
-  { &kNS_UNICODETOCP1255_CID, false, NULL, nsUnicodeToCP1255Constructor },
-  { &kNS_UNICODETOCP1256_CID, false, NULL, nsUnicodeToCP1256Constructor },
-  { &kNS_UNICODETOCP1257_CID, false, NULL, nsUnicodeToCP1257Constructor },
-  { &kNS_UNICODETOCP1258_CID, false, NULL, nsUnicodeToCP1258Constructor },
-  { &kNS_UNICODETOTIS620_CID, false, NULL, nsUnicodeToTIS620Constructor },
-  { &kNS_UNICODETOISO885911_CID, false, NULL, nsUnicodeToISO885911Constructor },
-  { &kNS_UNICODETOCP874_CID, false, NULL, nsUnicodeToCP874Constructor },
-  { &kNS_UNICODETOCP866_CID, false, NULL, nsUnicodeToCP866Constructor },
-  { &kNS_UNICODETOKOI8R_CID, false, NULL, nsUnicodeToKOI8RConstructor },
-  { &kNS_UNICODETOKOI8U_CID, false, NULL, nsUnicodeToKOI8UConstructor },
-  { &kNS_UNICODETOMACCE_CID, false, NULL, nsUnicodeToMacCEConstructor },
-  { &kNS_UNICODETOMACGREEK_CID, false, NULL, nsUnicodeToMacGreekConstructor },
-  { &kNS_UNICODETOMACTURKISH_CID, false, NULL, nsUnicodeToMacTurkishConstructor },
-  { &kNS_UNICODETOMACCROATIAN_CID, false, NULL, nsUnicodeToMacCroatianConstructor },
-  { &kNS_UNICODETOMACROMANIAN_CID, false, NULL, nsUnicodeToMacRomanianConstructor },
-  { &kNS_UNICODETOMACCYRILLIC_CID, false, NULL, nsUnicodeToMacCyrillicConstructor },
-  { &kNS_UNICODETOMACICELANDIC_CID, false, NULL, nsUnicodeToMacIcelandicConstructor },
-  { &kNS_UNICODETOGEOSTD8_CID, false, NULL, nsUnicodeToGEOSTD8Constructor },
-  { &kNS_UNICODETOARMSCII8_CID, false, NULL, nsUnicodeToARMSCII8Constructor },
-  { &kNS_UNICODETOTCVN5712_CID, false, NULL, nsUnicodeToTCVN5712Constructor },
-  { &kNS_UNICODETOVISCII_CID, false, NULL, nsUnicodeToVISCIIConstructor },
-  { &kNS_UNICODETOVPS_CID, false, NULL, nsUnicodeToVPSConstructor },
-  { &kNS_UNICODETOUTF7_CID, false, NULL, nsUnicodeToUTF7Constructor },
-  { &kNS_UNICODETOMUTF7_CID, false, NULL, nsUnicodeToMUTF7Constructor },
-  { &kNS_UNICODETOUTF16BE_CID, false, NULL, nsUnicodeToUTF16BEConstructor },
-  { &kNS_UNICODETOUTF16LE_CID, false, NULL, nsUnicodeToUTF16LEConstructor },
-  { &kNS_UNICODETOUTF16_CID, false, NULL, nsUnicodeToUTF16Constructor },
-  { &kNS_UNICODETOT61_CID, false, NULL, nsUnicodeToT61Constructor },
-  { &kNS_UNICODETOUSERDEFINED_CID, false, NULL, nsUnicodeToUserDefinedConstructor },
-  { &kNS_UNICODETOSYMBOL_CID, false, NULL, nsUnicodeToSymbolConstructor },
-  { &kNS_UNICODETOZAPFDINGBATS_CID, false, NULL, nsUnicodeToZapfDingbatConstructor },
-  { &kNS_UNICODETOADOBEEURO_CID, false, NULL, nsUnicodeToAdobeEuroConstructor },
-  { &kNS_UNICODETOMACARABIC_CID, false, NULL, nsUnicodeToMacArabicConstructor },
-  { &kNS_UNICODETOMACDEVANAGARI_CID, false, NULL, nsUnicodeToMacDevanagariConstructor },
-  { &kNS_UNICODETOMACFARSI_CID, false, NULL, nsUnicodeToMacFarsiConstructor },
-  { &kNS_UNICODETOMACGURMUKHI_CID, false, NULL, nsUnicodeToMacGurmukhiConstructor },
-  { &kNS_UNICODETOMACGUJARATI_CID, false, NULL, nsUnicodeToMacGujaratiConstructor },
-  { &kNS_UNICODETOMACHEBREW_CID, false, NULL, nsUnicodeToMacHebrewConstructor },
-  { &kNS_UNICODETOTSCII_CID, false, NULL, nsUnicodeToTSCIIConstructor },
-  { &kNS_UNICODETOTAMILTTF_CID, false, NULL, nsUnicodeToTamilTTFConstructor },
-  { &kNS_CP850TOUNICODE_CID, false, NULL, nsCP850ToUnicodeConstructor },
-  { &kNS_CP852TOUNICODE_CID, false, NULL, nsCP852ToUnicodeConstructor },
-  { &kNS_CP855TOUNICODE_CID, false, NULL, nsCP855ToUnicodeConstructor },
-  { &kNS_CP857TOUNICODE_CID, false, NULL, nsCP857ToUnicodeConstructor },
-  { &kNS_CP862TOUNICODE_CID, false, NULL, nsCP862ToUnicodeConstructor },
-  { &kNS_CP864TOUNICODE_CID, false, NULL, nsCP864ToUnicodeConstructor },
-  { &kNS_CP864ITOUNICODE_CID, false, NULL, nsCP864iToUnicodeConstructor },
-#ifdef XP_OS2
-  { &kNS_CP869TOUNICODE_CID, false, NULL, nsCP869ToUnicodeConstructor },
-  { &kNS_CP1125TOUNICODE_CID, false, NULL, nsCP1125ToUnicodeConstructor },
-  { &kNS_CP1131TOUNICODE_CID, false, NULL, nsCP1131ToUnicodeConstructor },
-#endif
-  { &kNS_UNICODETOCP850_CID, false, NULL, nsUnicodeToCP850Constructor },
-  { &kNS_UNICODETOCP852_CID, false, NULL, nsUnicodeToCP852Constructor },
-  { &kNS_UNICODETOCP855_CID, false, NULL, nsUnicodeToCP855Constructor },
-  { &kNS_UNICODETOCP857_CID, false, NULL, nsUnicodeToCP857Constructor },
-  { &kNS_UNICODETOCP862_CID, false, NULL, nsUnicodeToCP862Constructor },
-  { &kNS_UNICODETOCP864_CID, false, NULL, nsUnicodeToCP864Constructor },
-  { &kNS_UNICODETOCP864I_CID, false, NULL, nsUnicodeToCP864iConstructor },
-#ifdef XP_OS2
-  { &kNS_UNICODETOCP869_CID, false, NULL, nsUnicodeToCP869Constructor },
-  { &kNS_UNICODETOCP1125_CID, false, NULL, nsUnicodeToCP1125Constructor },
-  { &kNS_UNICODETOCP1131_CID, false, NULL, nsUnicodeToCP1131Constructor },
-#endif
-  { &kNS_SJISTOUNICODE_CID, false, NULL, nsShiftJISToUnicodeConstructor },
-  { &kNS_EUCJPTOUNICODE_CID, false, NULL, nsEUCJPToUnicodeV2Constructor },
-  { &kNS_ISO2022JPTOUNICODE_CID, false, NULL, nsISO2022JPToUnicodeV2Constructor },
-  { &kNS_UNICODETOSJIS_CID, false, NULL, nsUnicodeToSJISConstructor },
-  { &kNS_UNICODETOEUCJP_CID, false, NULL, nsUnicodeToEUCJPConstructor },
-  { &kNS_UNICODETOISO2022JP_CID, false, NULL, nsUnicodeToISO2022JPConstructor },
-  { &kNS_UNICODETOJISX0201_CID, false, NULL, nsUnicodeToJISx0201Constructor },
-  { &kNS_EUCTWTOUNICODE_CID, false, NULL, nsEUCTWToUnicodeConstructor },
-  { &kNS_UNICODETOEUCTW_CID, false, NULL, nsUnicodeToEUCTWConstructor },
-  { &kNS_UNICODETOBIG5_CID, false, NULL, nsUnicodeToBIG5Constructor },
-  { &kNS_BIG5TOUNICODE_CID, false, NULL, nsBIG5ToUnicodeConstructor },
-  { &kNS_UNICODETOBIG5HKSCS_CID, false, NULL, nsUnicodeToBIG5HKSCSConstructor },
-  { &kNS_UNICODETOHKSCS_CID, false, NULL, nsUnicodeToHKSCSConstructor },
-  { &kNS_BIG5HKSCSTOUNICODE_CID, false, NULL, nsBIG5HKSCSToUnicodeConstructor },
-  { &kNS_EUCKRTOUNICODE_CID, false, NULL, nsEUCKRToUnicodeConstructor },
-  { &kNS_UNICODETOEUCKR_CID, false, NULL, nsUnicodeToEUCKRConstructor },
-  { &kNS_JOHABTOUNICODE_CID, false, NULL, nsJohabToUnicodeConstructor },
-  { &kNS_UNICODETOJOHAB_CID, false, NULL, nsUnicodeToJohabConstructor },
-  { &kNS_CP949TOUNICODE_CID, false, NULL, nsCP949ToUnicodeConstructor },
-  { &kNS_UNICODETOCP949_CID, false, NULL, nsUnicodeToCP949Constructor },
-  { &kNS_ISO2022KRTOUNICODE_CID, false, NULL, nsISO2022KRToUnicodeConstructor },
-  { &kNS_GB2312TOUNICODE_CID, false, NULL, nsGB2312ToUnicodeV2Constructor },
-  { &kNS_UNICODETOGB2312_CID, false, NULL, nsUnicodeToGB2312V2Constructor },
-  { &kNS_GBKTOUNICODE_CID, false, NULL, nsGBKToUnicodeConstructor },
-  { &kNS_UNICODETOGBK_CID, false, NULL, nsUnicodeToGBKConstructor },
-  { &kNS_HZTOUNICODE_CID, false, NULL, nsHZToUnicodeConstructor },
-  { &kNS_UNICODETOHZ_CID, false, NULL, nsUnicodeToHZConstructor },
-  { &kNS_GB18030TOUNICODE_CID, false, NULL, nsGB18030ToUnicodeConstructor },
-  { &kNS_UNICODETOGB18030_CID, false, NULL, nsUnicodeToGB18030Constructor },
-  { &kNS_ISO2022CNTOUNICODE_CID, false, NULL, nsISO2022CNToUnicodeConstructor },
   { NULL },
 };
 
 static const mozilla::Module::ContractIDEntry kUConvContracts[] = {
   { NS_CHARSETCONVERTERMANAGER_CONTRACTID, &kNS_ICHARSETCONVERTERMANAGER_CID },
   { NS_ITEXTTOSUBURI_CONTRACTID, &kNS_TEXTTOSUBURI_CID },
   { NS_CONVERTERINPUTSTREAM_CONTRACTID, &kNS_CONVERTERINPUTSTREAM_CID },
   { "@mozilla.org/intl/converter-output-stream;1", &kNS_CONVERTEROUTPUTSTREAM_CID },
@@ -955,191 +140,16 @@ static const mozilla::Module::ContractID
   { NS_ISO88591TOUNICODE_CONTRACTID, &kNS_ISO88591TOUNICODE_CID },
   { NS_CP1252TOUNICODE_CONTRACTID, &kNS_CP1252TOUNICODE_CID },
   { NS_MACROMANTOUNICODE_CONTRACTID, &kNS_MACROMANTOUNICODE_CID },
   { NS_UTF8TOUNICODE_CONTRACTID, &kNS_UTF8TOUNICODE_CID },
   { NS_UNICODETOISO88591_CONTRACTID, &kNS_UNICODETOISO88591_CID },
   { NS_UNICODETOCP1252_CONTRACTID, &kNS_UNICODETOCP1252_CID },
   { NS_UNICODETOMACROMAN_CONTRACTID, &kNS_UNICODETOMACROMAN_CID },
   { NS_UNICODETOUTF8_CONTRACTID, &kNS_UNICODETOUTF8_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "us-ascii", &kNS_ASCIITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-2", &kNS_ISO88592TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-3", &kNS_ISO88593TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-4", &kNS_ISO88594TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-5", &kNS_ISO88595TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-6", &kNS_ISO88596TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-6-I", &kNS_ISO88596ITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-6-E", &kNS_ISO88596ETOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-7", &kNS_ISO88597TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-8", &kNS_ISO88598TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-8-I", &kNS_ISO88598ITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-8-E", &kNS_ISO88598ETOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-9", &kNS_ISO88599TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-10", &kNS_ISO885910TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-13", &kNS_ISO885913TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-14", &kNS_ISO885914TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-15", &kNS_ISO885915TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-16", &kNS_ISO885916TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-IR-111", &kNS_ISOIR111TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1250", &kNS_CP1250TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1251", &kNS_CP1251TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1253", &kNS_CP1253TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1254", &kNS_CP1254TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1255", &kNS_CP1255TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1256", &kNS_CP1256TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1257", &kNS_CP1257TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-1258", &kNS_CP1258TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "TIS-620", &kNS_TIS620TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-8859-11", &kNS_ISO885911TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "windows-874", &kNS_CP874TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "IBM866", &kNS_CP866TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "KOI8-R", &kNS_KOI8RTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "KOI8-U", &kNS_KOI8UTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-ce", &kNS_MACCETOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-greek", &kNS_MACGREEKTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-turkish", &kNS_MACTURKISHTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-croatian", &kNS_MACCROATIANTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-romanian", &kNS_MACROMANIANTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-cyrillic", &kNS_MACCYRILLICTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-icelandic", &kNS_MACICELANDICTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "GEOSTD8", &kNS_GEOSTD8TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "armscii-8", &kNS_ARMSCII8TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-viet-tcvn5712", &kNS_TCVN5712TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "VISCII", &kNS_VISCIITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-viet-vps", &kNS_VPSTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "UTF-7", &kNS_UTF7TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-imap4-modified-utf7", &kNS_MUTF7TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "UTF-16", &kNS_UTF16TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "UTF-16BE", &kNS_UTF16BETOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "UTF-16LE", &kNS_UTF16LETOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "T.61-8bit", &kNS_T61TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-user-defined", &kNS_USERDEFINEDTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-arabic", &kNS_MACARABICTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-devanagari", &kNS_MACDEVANAGARITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-farsi", &kNS_MACFARSITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-gurmukhi", &kNS_MACGURMUKHITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-gujarati", &kNS_MACGUJARATITOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-mac-hebrew", &kNS_MACHEBREWTOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "us-ascii", &kNS_UNICODETOASCII_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-2", &kNS_UNICODETOISO88592_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-3", &kNS_UNICODETOISO88593_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-4", &kNS_UNICODETOISO88594_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-5", &kNS_UNICODETOISO88595_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-6", &kNS_UNICODETOISO88596_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-6-I", &kNS_UNICODETOISO88596I_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-6-E", &kNS_UNICODETOISO88596E_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-7", &kNS_UNICODETOISO88597_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-8", &kNS_UNICODETOISO88598_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-8-I", &kNS_UNICODETOISO88598I_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-8-E", &kNS_UNICODETOISO88598E_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-9", &kNS_UNICODETOISO88599_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-10", &kNS_UNICODETOISO885910_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-13", &kNS_UNICODETOISO885913_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-14", &kNS_UNICODETOISO885914_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-15", &kNS_UNICODETOISO885915_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-16", &kNS_UNICODETOISO885916_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-IR-111", &kNS_UNICODETOISOIR111_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1250", &kNS_UNICODETOCP1250_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1251", &kNS_UNICODETOCP1251_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1253", &kNS_UNICODETOCP1253_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1254", &kNS_UNICODETOCP1254_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1255", &kNS_UNICODETOCP1255_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1256", &kNS_UNICODETOCP1256_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1257", &kNS_UNICODETOCP1257_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-1258", &kNS_UNICODETOCP1258_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "TIS-620", &kNS_UNICODETOTIS620_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-8859-11", &kNS_UNICODETOISO885911_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "windows-874", &kNS_UNICODETOCP874_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "IBM866", &kNS_UNICODETOCP866_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "KOI8-R", &kNS_UNICODETOKOI8R_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "KOI8-U", &kNS_UNICODETOKOI8U_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-ce", &kNS_UNICODETOMACCE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-greek", &kNS_UNICODETOMACGREEK_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-turkish", &kNS_UNICODETOMACTURKISH_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-croatian", &kNS_UNICODETOMACCROATIAN_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-romanian", &kNS_UNICODETOMACROMANIAN_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-cyrillic", &kNS_UNICODETOMACCYRILLIC_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-icelandic", &kNS_UNICODETOMACICELANDIC_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "GEOSTD8", &kNS_UNICODETOGEOSTD8_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "armscii-8", &kNS_UNICODETOARMSCII8_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-viet-tcvn5712", &kNS_UNICODETOTCVN5712_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "VISCII", &kNS_UNICODETOVISCII_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-viet-vps", &kNS_UNICODETOVPS_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "UTF-7", &kNS_UNICODETOUTF7_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-imap4-modified-utf7", &kNS_UNICODETOMUTF7_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "UTF-16BE", &kNS_UNICODETOUTF16BE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "UTF-16LE", &kNS_UNICODETOUTF16LE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "UTF-16", &kNS_UNICODETOUTF16_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "T.61-8bit", &kNS_UNICODETOT61_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-user-defined", &kNS_UNICODETOUSERDEFINED_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "Adobe-Symbol-Encoding", &kNS_UNICODETOSYMBOL_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-zapf-dingbats", &kNS_UNICODETOZAPFDINGBATS_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-adobe-euro", &kNS_UNICODETOADOBEEURO_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-arabic", &kNS_UNICODETOMACARABIC_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-devanagari", &kNS_UNICODETOMACDEVANAGARI_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-farsi", &kNS_UNICODETOMACFARSI_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-gurmukhi", &kNS_UNICODETOMACGURMUKHI_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-gujarati", &kNS_UNICODETOMACGUJARATI_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-mac-hebrew", &kNS_UNICODETOMACHEBREW_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-tscii", &kNS_UNICODETOTSCII_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-tamilttf-0", &kNS_UNICODETOTAMILTTF_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "IBM850", &kNS_CP850TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "IBM852", &kNS_CP852TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "IBM855", &kNS_CP855TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "IBM857", &kNS_CP857TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "IBM862", &kNS_CP862TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "IBM864", &kNS_CP864TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "IBM864i", &kNS_CP864ITOUNICODE_CID },
-#ifdef XP_OS2
-  { NS_UNICODEDECODER_CONTRACTID_BASE "IBM869", &kNS_CP869TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "IBM1125", &kNS_CP1125TOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "IBM1131", &kNS_CP1131TOUNICODE_CID },
-#endif
-  { NS_UNICODEENCODER_CONTRACTID_BASE "IBM850", &kNS_UNICODETOCP850_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "IBM852", &kNS_UNICODETOCP852_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "IBM855", &kNS_UNICODETOCP855_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "IBM857", &kNS_UNICODETOCP857_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "IBM862", &kNS_UNICODETOCP862_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "IBM864", &kNS_UNICODETOCP864_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "IBM864i", &kNS_UNICODETOCP864I_CID },
-#ifdef XP_OS2
-  { NS_UNICODEENCODER_CONTRACTID_BASE "IBM869", &kNS_UNICODETOCP869_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "IBM1125", &kNS_UNICODETOCP1125_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "IBM1131", &kNS_UNICODETOCP1131_CID },
-#endif
-  { NS_UNICODEDECODER_CONTRACTID_BASE "Shift_JIS", &kNS_SJISTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "EUC-JP", &kNS_EUCJPTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-2022-JP", &kNS_ISO2022JPTOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "Shift_JIS", &kNS_UNICODETOSJIS_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "EUC-JP", &kNS_UNICODETOEUCJP_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "ISO-2022-JP", &kNS_UNICODETOISO2022JP_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "jis_0201", &kNS_UNICODETOJISX0201_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-euc-tw", &kNS_EUCTWTOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-euc-tw", &kNS_UNICODETOEUCTW_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "Big5", &kNS_UNICODETOBIG5_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "Big5", &kNS_BIG5TOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "Big5-HKSCS", &kNS_UNICODETOBIG5HKSCS_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "hkscs-1", &kNS_UNICODETOHKSCS_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "Big5-HKSCS", &kNS_BIG5HKSCSTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "EUC-KR", &kNS_EUCKRTOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "EUC-KR", &kNS_UNICODETOEUCKR_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-johab", &kNS_JOHABTOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-johab", &kNS_UNICODETOJOHAB_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "x-windows-949", &kNS_CP949TOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "x-windows-949", &kNS_UNICODETOCP949_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-2022-KR", &kNS_ISO2022KRTOUNICODE_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "GB2312", &kNS_GB2312TOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "GB2312", &kNS_UNICODETOGB2312_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "gbk", &kNS_GBKTOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "gbk", &kNS_UNICODETOGBK_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "HZ-GB-2312", &kNS_HZTOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "HZ-GB-2312", &kNS_UNICODETOHZ_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "gb18030", &kNS_GB18030TOUNICODE_CID },
-  { NS_UNICODEENCODER_CONTRACTID_BASE "gb18030", &kNS_UNICODETOGB18030_CID },
-  { NS_UNICODEDECODER_CONTRACTID_BASE "ISO-2022-CN", &kNS_ISO2022CNTOUNICODE_CID },
   { NULL }
 };
 
 static const mozilla::Module kUConvModule = {
   mozilla::Module::kVersion,
   kUConvCIDs,
   kUConvContracts,
   kUConvCategories
--- a/intl/uconv/ucvcn/Makefile.in
+++ b/intl/uconv/ucvcn/Makefile.in
@@ -40,18 +40,19 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= ucvcn
 LIBRARY_NAME	= ucvcn_s
 FORCE_STATIC_LIB=1
+ifneq (WINNT,$(OS_TARGET))
 LIBXUL_LIBRARY = 1
-
+endif
 
 CPPSRCS		= \
 		nsGB2312ToUnicodeV2.cpp \
 		nsUnicodeToGB2312V2.cpp \
 		nsGBKToUnicode.cpp \
 		nsUnicodeToGBK.cpp \
 		nsISO2022CNToUnicode.cpp \
 		nsUnicodeToISO2022CN.cpp \
--- a/intl/uconv/ucvcn/nsISO2022CNToUnicode.cpp
+++ b/intl/uconv/ucvcn/nsISO2022CNToUnicode.cpp
@@ -34,16 +34,17 @@
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 #include "nsISO2022CNToUnicode.h"
 #include "nsUCSupport.h"
 #include "nsICharsetConverterManager.h"
 #include "nsIServiceManager.h"
+#include "nsServiceManagerUtils.h"
 
 static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
 
 NS_IMETHODIMP nsISO2022CNToUnicode::GB2312_To_Unicode(unsigned char *aSrc, PRInt32 aSrcLength, PRUnichar * aDest, PRInt32 * aDestLength)
 {
     nsresult rv;
 
     if(!mGB2312_Decoder) {
--- a/intl/uconv/ucvibm/Makefile.in
+++ b/intl/uconv/ucvibm/Makefile.in
@@ -41,17 +41,19 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= ucvibm
 LIBRARY_NAME	= ucvibm_s
 FORCE_STATIC_LIB = 1
+ifneq (WINNT,$(OS_TARGET))
 LIBXUL_LIBRARY = 1
+endif
 
 
 CPPSRCS		= \
 		nsCP850ToUnicode.cpp \
 		nsCP852ToUnicode.cpp \
 		nsCP855ToUnicode.cpp \
 		nsCP857ToUnicode.cpp \
 		nsCP862ToUnicode.cpp \
--- a/intl/uconv/ucvja/Makefile.in
+++ b/intl/uconv/ucvja/Makefile.in
@@ -41,18 +41,19 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= ucvja
 LIBRARY_NAME	= ucvja_s
 FORCE_STATIC_LIB = 1
+ifneq (WINNT,$(OS_TARGET))
 LIBXUL_LIBRARY = 1
-
+endif
 
 CPPSRCS		= \
 		nsJapaneseToUnicode.cpp \
 		nsUnicodeToSJIS.cpp \
 		nsUnicodeToEUCJP.cpp \
 		nsUnicodeToISO2022JP.cpp \
 		nsUnicodeToJISx0201.cpp \
 		$(NULL)
--- a/intl/uconv/ucvja/nsJapaneseToUnicode.cpp
+++ b/intl/uconv/ucvja/nsJapaneseToUnicode.cpp
@@ -37,16 +37,17 @@
 #include "nsJapaneseToUnicode.h"
 
 #include "nsUCSupport.h"
 
 #include "japanese.map"
 
 #include "nsICharsetConverterManager.h"
 #include "nsIServiceManager.h"
+#include "nsServiceManagerUtils.h"
 static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
 
 #ifdef XP_OS2
   // HTML5-incompliant behavior for OS/2, see bug 108136
   // This is bogus. The right fix would be working around the font problems
   // in OS/2 gfx, since this "fix" introduces script-visible DOM differences
   // between the platforms.
   #define SJIS_INDEX gIBM943Index[0]
--- a/intl/uconv/ucvko/Makefile.in
+++ b/intl/uconv/ucvko/Makefile.in
@@ -40,18 +40,19 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= ucvko
 LIBRARY_NAME	= ucvko_s
 FORCE_STATIC_LIB=1
+ifneq (WINNT,$(OS_TARGET))
 LIBXUL_LIBRARY = 1
-
+endif
 
 CPPSRCS		= \
 		nsEUCKRToUnicode.cpp \
 		nsUnicodeToEUCKR.cpp \
 		nsISO2022KRToUnicode.cpp \
 		nsCP949ToUnicode.cpp \
 		nsUnicodeToCP949.cpp \
 		nsUnicodeToJohab.cpp \
--- a/intl/uconv/ucvko/nsISO2022KRToUnicode.cpp
+++ b/intl/uconv/ucvko/nsISO2022KRToUnicode.cpp
@@ -34,16 +34,17 @@
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 #include "nsISO2022KRToUnicode.h"
 #include "nsUCSupport.h"
 #include "nsICharsetConverterManager.h"
 #include "nsIServiceManager.h"
+#include "nsServiceManagerUtils.h"
 
 static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
 
 NS_IMETHODIMP nsISO2022KRToUnicode::Convert(const char * aSrc, PRInt32 * aSrcLen, PRUnichar * aDest, PRInt32 * aDestLen)
 {
   const unsigned char* srcEnd = (unsigned char*)aSrc + *aSrcLen;
   const unsigned char* src =(unsigned char*) aSrc;
   PRUnichar* destEnd = aDest + *aDestLen;
--- a/intl/uconv/ucvlatin/Makefile.in
+++ b/intl/uconv/ucvlatin/Makefile.in
@@ -40,18 +40,19 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= ucvlatin
 LIBRARY_NAME	= ucvlatin_s
 FORCE_STATIC_LIB = 1
+ifneq (WINNT,$(OS_TARGET))
 LIBXUL_LIBRARY = 1
-
+endif
 
 CPPSRCS		= \
 		nsAsciiToUnicode.cpp \
 		nsISO88592ToUnicode.cpp \
 		nsISO88593ToUnicode.cpp \
 		nsISO88594ToUnicode.cpp \
 		nsISO88595ToUnicode.cpp \
 		nsISO88596ToUnicode.cpp \
--- a/intl/uconv/ucvtw/Makefile.in
+++ b/intl/uconv/ucvtw/Makefile.in
@@ -40,18 +40,19 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= ucvtw
 LIBRARY_NAME	= ucvtw_s
 FORCE_STATIC_LIB=1
+ifneq (WINNT,$(OS_TARGET))
 LIBXUL_LIBRARY = 1
-
+endif
 
 CPPSRCS		= \
 		nsBIG5ToUnicode.cpp \
 		nsUnicodeToBIG5.cpp \
 		nsBIG5HKSCSToUnicode.cpp \
 		nsUnicodeToBIG5HKSCS.cpp \
 		nsUnicodeToHKSCS.cpp \
 		$(NULL)
--- a/intl/uconv/ucvtw2/Makefile.in
+++ b/intl/uconv/ucvtw2/Makefile.in
@@ -40,18 +40,19 @@ topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MODULE		= ucvtw2
 LIBRARY_NAME	= ucvtw2_s
 FORCE_STATIC_LIB=1
+ifneq (WINNT,$(OS_TARGET))
 LIBXUL_LIBRARY = 1
-
+endif
 
 CPPSRCS		= \
 		nsEUCTWToUnicode.cpp \
 		nsUnicodeToEUCTW.cpp \
 		$(NULL)
 
 #SHARED_LIBRARY_LIBS = $(DIST)/lib/$(LIB_PREFIX)ucvutil_s.$(LIB_SUFFIX)
 
--- a/intl/uconv/util/Makefile.in
+++ b/intl/uconv/util/Makefile.in
@@ -37,31 +37,22 @@
 
 DEPTH		= ../../..
 topsrcdir	= @top_srcdir@
 srcdir		= @srcdir@
 VPATH		= @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
+DIRS = external
+
 MODULE		= uconv
 LIBRARY_NAME	= ucvutil_s
 EXPORT_LIBRARY = 1
 FORCE_STATIC_LIB = 1
 LIBXUL_LIBRARY = 1
 
 MODULE_NAME	= nsUCUtil
 
-CSRCS		= \
-		ugen.c \
-		uscan.c \
-		umap.c \
-		$(NULL)
-
-CPPSRCS		= \
-		nsUCSupport.cpp \
-		nsUCConstructors.cpp \
-		nsUnicodeDecodeHelper.cpp \
-		nsUnicodeEncodeHelper.cpp \
-		$(NULL)
+include $(srcdir)/objs.mk
 
 include $(topsrcdir)/config/rules.mk
 
new file mode 100644
--- /dev/null
+++ b/intl/uconv/util/external/Makefile.in
@@ -0,0 +1,57 @@
+#
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is mozilla.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either of the GNU General Public License Version 2 or later (the "GPL"),
+# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+DEPTH		= ../../../..
+topsrcdir	= @top_srcdir@
+srcdir		= @srcdir@
+VPATH		= @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+MODULE		= uconv
+LIBRARY_NAME	= ucvxutil_s
+EXPORT_LIBRARY = 1
+FORCE_STATIC_LIB = 1
+
+MODULE_NAME	= nsExternalUCUtil
+
+VPATH += $(srcdir)/..
+
+include $(srcdir)/../objs.mk
+
+include $(topsrcdir)/config/rules.mk
+
new file mode 100644
--- /dev/null
+++ b/intl/uconv/util/objs.mk
@@ -0,0 +1,12 @@
+CSRCS		= \
+		ugen.c \
+		uscan.c \
+		umap.c \
+		$(NULL)
+
+CPPSRCS		= \
+		nsUCSupport.cpp \
+		nsUCConstructors.cpp \
+		nsUnicodeDecodeHelper.cpp \
+		nsUnicodeEncodeHelper.cpp \
+		$(NULL)
--- a/testing/xpcshell/runxpcshelltests.py
+++ b/testing/xpcshell/runxpcshelltests.py
@@ -307,16 +307,17 @@ class XPCShellTests(object):
     return leakLogFile
 
   def launchProcess(self, cmd, stdout, stderr, env, cwd):
     """
       Simple wrapper to launch a process.
       On a remote system, this is more complex and we need to overload this function.
     """
     cmd = wrapCommand(cmd)
+    print cmd
     proc = Popen(cmd, stdout=stdout, stderr=stderr, 
                 env=env, cwd=cwd)
     return proc
 
   def communicate(self, proc):
     """
       Simple wrapper to communicate with a process.
       On a remote system, this is overloaded to handle remote process communication.
--- a/toolkit/library/Makefile.in
+++ b/toolkit/library/Makefile.in
@@ -195,16 +195,22 @@ COMPONENT_LIBS += \
   jetpack_s \
   telemetry \
   jsdebugger \
   storagecomps \
   rdf \
   windowds \
   $(NULL)
 
+ifneq (WINNT,$(OS_ARCH))
+COMPONENT_LIBS += \
+  uconvd \
+  $(NULL)
+endif
+
 ifdef BUILD_CTYPES
 COMPONENT_LIBS += \
   jsctypes \
   $(NULL)
 endif
 
 COMPONENT_LIBS += \
   jsperf \
--- a/toolkit/library/nsStaticXULComponents.cpp
+++ b/toolkit/library/nsStaticXULComponents.cpp
@@ -200,18 +200,25 @@
 #if defined(MOZ_APP_COMPONENT_INCLUDE)
 #include MOZ_APP_COMPONENT_INCLUDE
 #define MOZ_APP_COMPONENT_MODULES APP_COMPONENT_MODULES
 #else
 #define MOZ_APP_COMPONENT_MODULES
 #endif
 #endif
 
+#ifdef XP_WIN
+#define UCONV_DATA_MODULE
+#else
+#define UCONV_DATA_MODULE MODULE(nsUConvDataModule)
+#endif
+
 #define XUL_MODULES                          \
     MODULE(nsUConvModule)                    \
+    UCONV_DATA_MODULE                        \
     MODULE(nsI18nModule)                     \
     MODULE(nsChardetModule)                  \
     UNIVERSALCHARDET_MODULE                  \
     MODULE(necko)                            \
     PERMISSIONS_MODULES                      \
     AUTH_MODULE                              \
     MODULE(nsJarModule)                      \
     ZIPWRITER_MODULE                         \
--- a/toolkit/toolkit-tiers.mk
+++ b/toolkit/toolkit-tiers.mk
@@ -232,20 +232,28 @@ ifdef APP_LIBXUL_STATICDIRS
 tier_platform_staticdirs += $(APP_LIBXUL_STATICDIRS)
 endif
 ifdef APP_LIBXUL_DIRS
 # Applications can cheat and ask for code to be
 # built before libxul so it can be linked into libxul.
 tier_platform_dirs += $(APP_LIBXUL_DIRS)
 endif
 
+ifneq (WINNT,$(OS_ARCH))
+tier_platform_dirs += intl/uconv/datamodule
+endif
+
 tier_platform_dirs += toolkit/library
 
 tier_platform_dirs += xpcom/stub
 
+ifeq (WINNT,$(OS_ARCH))
+tier_platform_dirs += intl/uconv/datamodule
+endif
+
 ifdef NS_TRACE_MALLOC
 tier_platform_dirs += tools/trace-malloc
 endif
 
 ifdef MOZ_ENABLE_GNOME_COMPONENT
 tier_platform_dirs    += toolkit/system/gnome
 endif
 
--- a/xpcom/build/nsXPCOM.h
+++ b/xpcom/build/nsXPCOM.h
@@ -62,16 +62,17 @@
 # define NS_LogCtor                  NS_LogCtor_P
 # define NS_LogDtor                  NS_LogDtor_P
 # define NS_LogCOMPtrAddRef          NS_LogCOMPtrAddRef_P
 # define NS_LogCOMPtrRelease         NS_LogCOMPtrRelease_P
 # define NS_CycleCollectorSuspect    NS_CycleCollectorSuspect_P
 # define NS_CycleCollectorForget     NS_CycleCollectorForget_P
 # define NS_CycleCollectorSuspect2   NS_CycleCollectorSuspect2_P
 # define NS_CycleCollectorForget2    NS_CycleCollectorForget2_P
+# define NS_IsCycleCollectorThread   NS_IsCycleCollectorThread_P
 #endif
 
 #include "nscore.h"
 #include "nsXPCOMCID.h"
 
 #ifdef __cplusplus
 #define DECL_CLASS(c) class c
 #define DECL_STRUCT(c) struct c
@@ -399,16 +400,19 @@ XPCOM_API(bool)
 NS_CycleCollectorForget(nsISupports *n);
 
 XPCOM_API(nsPurpleBufferEntry*)
 NS_CycleCollectorSuspect2(nsISupports *n);
 
 XPCOM_API(bool)
 NS_CycleCollectorForget2(nsPurpleBufferEntry *e);
 
+XPCOM_API(bool)
+NS_IsCycleCollectorThread();
+
 #endif
 
 /**
  * Categories (in the category manager service) used by XPCOM:
  */
 
 /**
  * A category which is read after component registration but before
--- a/xpcom/glue/BlockingResourceBase.h
+++ b/xpcom/glue/BlockingResourceBase.h
@@ -340,27 +340,30 @@ private:
     static PRStatus InitStatics() {
         PR_NewThreadPrivateIndex(&sResourceAcqnChainFrontTPI, 0);
         sDeadlockDetector = new DDT();
         if (!sDeadlockDetector)
             NS_RUNTIMEABORT("can't allocate deadlock detector");
         return PR_SUCCESS;
     }
 
+public:
     /**
      * Shutdown
      * Free static members.
      *
      * *NOT* thread safe.
      */
     static void Shutdown() {
         delete sDeadlockDetector;
         sDeadlockDetector = 0;
     }
 
+private:
+
 #  ifdef MOZILLA_INTERNAL_API
     // so it can call BlockingResourceBase::Shutdown()
     friend void LogTerm();
 #  endif  // ifdef MOZILLA_INTERNAL_API
 
 #else  // non-DEBUG implementation
 
     BlockingResourceBase(const char* aName, BlockingResourceType aType)
--- a/xpcom/glue/DeadlockDetector.h
+++ b/xpcom/glue/DeadlockDetector.h
@@ -220,19 +220,21 @@ private:
      * quality of error messages when potential deadlock is detected.
      */
     struct OrderingEntry
     {
         OrderingEntry() :
             mFirstSeen(CallStack::kNone),
             mOrderedLT()        // FIXME bug 456272: set to empirical
         {                       // dep size?
+          MOZ_COUNT_CTOR(OrderingEntry);
         }
         ~OrderingEntry()
         {
+          MOZ_COUNT_DTOR(OrderingEntry);
         }
 
         CallStack mFirstSeen; // first site from which the resource appeared
         HashEntryArray mOrderedLT; // this <_o Other
     };
 
     static void* TableAlloc(void* /*pool*/, PRSize size)
     {
@@ -362,27 +364,29 @@ public:
                                     PL_CompareValues, PL_CompareValues,
                                     &kAllocOps, 0);
         if (!mOrdering)
             NS_RUNTIMEABORT("couldn't initialize resource ordering table");
 
         mLock = PR_NewLock();
         if (!mLock)
             NS_RUNTIMEABORT("couldn't allocate deadlock detector lock");
+        MOZ_COUNT_CTOR(DeadlockDetector);
     }
 
     /**
      * ~DeadlockDetector
      *
      * *NOT* thread safe.
      */
     ~DeadlockDetector()
     {
         PL_HashTableDestroy(mOrdering);
         PR_DestroyLock(mLock);
+        MOZ_COUNT_DTOR(DeadlockDetector);
     }
 
     /**
      * Add
      * Make the deadlock detector aware of |aResource|.
      *
      * WARNING: The deadlock detector owns |aResource|.
      *
--- a/xpcom/glue/nsCycleCollectorUtils.h
+++ b/xpcom/glue/nsCycleCollectorUtils.h
@@ -35,27 +35,26 @@
  * ***** END LICENSE BLOCK ***** */
 
 #ifndef nsCycleCollectorUtils_h__
 #define nsCycleCollectorUtils_h__
 
 #include "nscore.h"
 #include "mozilla/threads/nsThreadIDs.h"
 
-#if defined(MOZILLA_INTERNAL_API)
-#define NS_IsCycleCollectorThread NS_IsCycleCollectorThread_P
+#if defined(MOZILLA_INTERNAL_API) && !defined(XPCOM_MAKING_STUB)
 #if defined(XP_WIN)
-bool NS_IsCycleCollectorThread();
+XPCOM_API(bool) NS_IsCycleCollectorThread();
 #elif defined(NS_TLS)
 // Defined in nsThreadManager.cpp.
 extern NS_TLS mozilla::threads::ID gTLSThreadID;
 inline bool NS_IsCycleCollectorThread()
 {
   return gTLSThreadID == mozilla::threads::CycleCollector;
 }
 #else
-NS_COM_GLUE bool NS_IsCycleCollectorThread();
+XPCOM_API(bool) NS_IsCycleCollectorThread();
 #endif
 #else
-NS_COM_GLUE bool NS_IsCycleCollectorThread();
+XPCOM_API(bool) NS_IsCycleCollectorThread();
 #endif
 
 #endif /* nsCycleCollectorUtils_h__ */
--- a/xpcom/stub/nsXPComStub.cpp
+++ b/xpcom/stub/nsXPComStub.cpp
@@ -30,16 +30,18 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
+#define XPCOM_MAKING_STUB
+
 #include "nsXPCOM.h"
 #include "nsXPCOMPrivate.h"
 #include "nsXPCOMStrings.h"
 #include "xptcall.h"
 
 #include <string.h>
 
 /**
@@ -554,8 +556,17 @@ NS_CycleCollectorSuspect2(nsISupports* o
 }
 
 #undef NS_CycleCollectorForget2
 EXPORT_XPCOM_API(bool)
 NS_CycleCollectorForget2(nsPurpleBufferEntry* e)
 {
   return NS_CycleCollectorForget2_P(e);
 }
+
+#ifdef XP_WIN
+#undef NS_IsCycleCollectorThread
+EXPORT_XPCOM_API(bool)
+NS_IsCycleCollectorThread()
+{
+  return NS_IsCycleCollectorThread_P();
+}
+#endif