Bug 640838: Remove OpenVMS support. r=khuey

This commit is contained in:
Matheus Kerschbaum 2011-03-26 11:51:35 -04:00
parent 36e293870e
commit 355ae99518
24 changed files with 4 additions and 1032 deletions

View File

@ -53,8 +53,3 @@ include $(topsrcdir)/config/rules.mk
libs:: $(srcdir)/run-mozilla.sh
$(INSTALL) $< $(DIST)/bin
ifeq ($(OS_ARCH),OpenVMS)
libs:: vms/mozilla.com vms/install.com vms/getinfo.com
$(INSTALL) $? $(DIST)/bin
endif

View File

@ -1,6 +0,0 @@
! Component global symbol file, used for all true XPCOM components (those
! which have IS_COMPONENT defined in their Makefile.
!
GSMATCH=LEQUAL,1,1
case_sensitive=YES
SYMBOL_VECTOR=(NSGetModule=PROCEDURE)

View File

@ -1,36 +0,0 @@
$ verify = 'f$verify(0)
$ if p1 .eqs. "DECW" then goto decw
$!
$! This command file in not used by the Mozilla/CSWB software.
$! It is here because if you report a software problem you may be asked
$! to run it and send the output back to the support specialist.
$!
$ set verify
$ set noon
$ show process /quota
$ show display
$ write sys$output f$environment("procedure")
$ show log /ful sys$disk,sys$login,tmp,home
$ show log /ful decc*
$ dir sys$login.;
$ run sys$common:[syshlp.examples.decw.utils]xdpyinfo.exe
$ show system /noprocess
$ ucx show version
$ type sys$sysroot:[sysmgr]decw$private_server_setup.com
$ set noverify
$ @sys$update:decw$versions all
$decw:
$ c = ""
$f_loop:
$ pid = f$pid(c)
$ if pid .eqs. ""
$ then
$ write sys$output "Unable to find DECW$SERVER process"
$ exit
$ endif
$ if f$getjpi(pid,"prcnam") .nes. "DECW$SERVER_0" then goto f_loop
$loop:
$ quota = f$getjpi(pid,"pgflquota")
$ inuse = f$getjpi(pid,"pagfilcnt")
$ write sys$output f$fao("!UL remaining out of !UL at !%D",inuse,quota,0)
$ if verify then set verify

View File

@ -1,52 +0,0 @@
$! Command file to install/deinstall Mozilla image.
$! This command file must exist in the root Mozilla directory (where the main
$! images and shareables reside).
$!
$! P1 = INSTALL command to use.
$! Default is "ADD /OPEN /HEADER_RESIDENT /SHARE"
$! To remove previously installed images pass REMOVE as P1.
$!
$ saved_dir = f$environment("default")
$!
$ if p1 .eqs. "" then p1 = "add /open /head /share"
$ me = f$envir("procedure")
$ here = f$parse(me,,,"device") + f$parse(me,,,"directory")
$!
$! Main image(s).
$!
$ call do_many "''p1'" "''here'*-bin."
$!
$! All the .so files in the main directory.
$!
$ call do_many "''p1'" "''here'*.so"
$!
$! All the .so files in the components directory.
$!
$ set default 'here'
$ set default [.components]
$ me = f$envir("default")
$ here = f$parse(me,,,"device") + f$parse(me,,,"directory")
$ call do_many "''p1'" "''here'*.so"
$!
$ set default 'saved_dir'
$ exit
$!
$do_one:
$ subroutine
$ write sys$output "Doing ",p2
$ install 'p1' 'p2'
$ endsubroutine
$!
$!
$do_many:
$ subroutine
$loop:
$ f=f$search(p2)
$ if f .nes. ""
$ then
$ v=f$parse(f,,,"version")
$ f=f-v
$ call do_one "''p1'" "''f'"
$ goto loop
$ endif
$ endsubroutine

View File

@ -1,26 +0,0 @@
! Fixed section of symbol vector for LIBXPCOM (debug)
!
GSMATCH=LEQUAL,2,2
case_sensitive=YES
!
! --------------------------------------------------------------------------
! Ident 2,1 introduced for M0.9.4
! --------------------------------------------------------------------------
!
SYMBOL_VECTOR=(CXX$assgnfrmhlpr13nsCMPt3okfmbt=PROCEDURE)
SYMBOL_VECTOR=(CXX$clk16nsQeryntrfcxnk434ulf1t=PROCEDURE)
SYMBOL_VECTOR=(CXX$clk17nsGtSrvcByCDxnk20ffnk0=PROCEDURE)
SYMBOL_VECTOR=(SPARE) ! __dt__13nsCOMPtr_basexv not present in debug
!
! --------------------------------------------------------------------------
! Ident 2,2 introduced for Mozilla 1.1 (and hence CSWB post 1.0).
! --------------------------------------------------------------------------
!
SYMBOL_VECTOR=(iid__L0__GetIID__9nsIModulexv=DATA)
SYMBOL_VECTOR=(iid__L0__GetIID__10nsIFactoryxv=DATA)
SYMBOL_VECTOR=(CXX$iidL0GtID11nsRnnblxv3t05kum=DATA)
SYMBOL_VECTOR=(CXX$GtGlblSrvcMngr16nsSr1vcg2p7=PROCEDURE)
!
! --------------------------------------------------------------------------
! End of fixed section
! --------------------------------------------------------------------------

View File

@ -1,26 +0,0 @@
! Fixed section of symbol vector for LIBXPCOM (non-debug)
!
GSMATCH=LEQUAL,2,2
case_sensitive=YES
!
! --------------------------------------------------------------------------
! Ident 2,1 introduced for M0.9.4
! --------------------------------------------------------------------------
!
SYMBOL_VECTOR=(CXX$assgnfrmhlpr13nsCMPt3okfmbt=PROCEDURE)
SYMBOL_VECTOR=(CXX$clk16nsQeryntrfcxnk434ulf1t=PROCEDURE)
SYMBOL_VECTOR=(CXX$clk17nsGtSrvcByCDxnk20ffnk0=PROCEDURE)
SYMBOL_VECTOR=(__dt__13nsCOMPtr_basexv=PROCEDURE)
!
! --------------------------------------------------------------------------
! Ident 2,2 introduced for Mozilla 1.1 (and hence CSWB post 1.0).
! --------------------------------------------------------------------------
!
SYMBOL_VECTOR=(iid__L0__GetIID__9nsIModulexv=DATA)
SYMBOL_VECTOR=(iid__L0__GetIID__10nsIFactoryxv=DATA)
SYMBOL_VECTOR=(CXX$iidL0GtID11nsRnnblxv3t05kum=DATA)
SYMBOL_VECTOR=(CXX$GtGlblSrvcMngr16nsSr1vcg2p7=PROCEDURE)
!
! --------------------------------------------------------------------------
! End of fixed section
! --------------------------------------------------------------------------

View File

@ -1,172 +0,0 @@
$! Command file to run Mozilla.
$! This command file must exist in the root Mozilla directory (where the main
$! images and shareables reside).
$!
$ moz_self = f$envir("procedure")
$ moz_dir = f$parse(moz_self,,,"device") + f$parse(moz_self,,,"directory")
$!
$ moz_user = f$edit(f$getjpi("","username"),"trim")
$ moz_cwd = f$environment("default")
$ moz_image = f$trnlnm("MOZILLA_IMAGE")
$ if moz_image .eqs. ""
$ then
$ moz_image = f$search("''moz_dir'*-bin.;")
$ if moz_image .nes. ""
$ then
$ moz_image = f$parse(moz_image,,,"name")
$ else
$ moz_image = "mozilla-bin"
$ endif
$ endif
$!
$ moz_gblpages_needed = (336 * 120/100)
$ moz_gblsects_needed = (1 * 120/100)
$ moz_gblpages_actual = f$getsyi("free_gblpages")
$ moz_gblsects_actual = f$getsyi("free_gblsects")
$ moz_wait = 0
$ if moz_gblpages_actual .lt. moz_gblpages_needed
$ then
$ write sys$output -
f$fao("WARNING, estimated global pages needed=!UL, available=!UL",-
moz_gblpages_needed, moz_gblpages_actual)
$ moz_wait = 1
$ endif
$ if moz_gblsects_actual .lt. moz_gblsects_needed
$ then
$ write sys$output -
f$fao("WARNING, estimated global sections needed=!UL, available=!UL",-
moz_gblsects_needed, moz_gblsects_actual)
$ moz_wait = 1
$ endif
$ if moz_wait .and. (f$mode() .eqs. "INTERACTIVE")
$ then
$ type sys$input
The above system parameter(s) may not be sufficient to
successfully run Mozilla.
$ read/prompt="Do you wish to continue [NO]: " sys$command moz_ans
$ if .not. moz_ans then exit
$ endif
$!
$! We need the directory as a unix-style spec.
$!
$ moz_unix = "/" + f$parse(moz_self,,,"device") - ":"
$ moz_self_dir = f$parse(moz_self,,,"directory") - "[" - "]" - "<" - ">"
$ i=0
$uloop:
$ e=f$element(i,".",moz_self_dir)
$ if e .nes. "."
$ then
$ moz_unix = moz_unix + "/" + e
$ i=i+1
$ goto uloop
$ endif
$ moz_unix = f$edit(moz_unix,"lowercase")
$!
$ moz_found_one = 0
$so_loop:
$ moz_so_file = f$search("''moz_dir'*.so")
$ if moz_so_file .nes. ""
$ then
$ name = f$parse(moz_so_file,,,"name")
$ define /user 'name' 'moz_dir''name'.so
$ moz_found_one = 1
$ goto so_loop
$ endif
$ if .not. moz_found_one
$ then
$ write sys$output "Unable to locate Mozilla images. Most likely reason is"
$ write sys$output "because the protection on the directory"
$ write sys$output moz_dir
$ write sys$output "does not allow you READ access."
$ exit
$ endif
$!
$ ipc_shr = f$trnlnm("ucx$ipc_shr") - ".EXE" + ".EXE"
$ if (f$locate("MULTINET",ipc_shr) .ne. f$length(ipc_shr)) .or. -
(f$locate("TCPWARE",ipc_shr) .ne. f$length(ipc_shr))
$ then
$ define /user VMS_NULL_DL_NAME 'ipc_shr'
$ else
$ define /user VMS_NULL_DL_NAME SYS$SHARE:TCPIP$IPC_SHR.EXE
$ endif
$ define /user GETADDRINFO TCPIP$GETADDRINFO
$ define /user FREEADDRINFO TCPIP$FREEADDRINFO
$ define /user GETNAMEINFO TCPIP$GETNAMEINFO
$ define /user GETIPNODEBYNAME TCPIP$GETIPNODEBYNAME
$ define /user GETIPNODEBYADDR TCPIP$GETIPNODEBYADDR
$ define /user FREEHOSTENT TCPIP$FREEHOSTENT
$!
$! A networking problem which is still unresolved means that by default
$! the IPv6 support is disabled. If you want to turn it back on define
$! the logical MOZILLA_IPV6 (to anything), but beware that you may
$! encounter hangs.
$!
$ if f$trnlnm("MOZILLA_IPV6") .eqs. ""
$ then
$ define /user /nolog GETIPNODEBYNAME NO_SUCH_NAME
$ endif
$!
$! These logicals define how files are created/opened.
$! The old code used: "shr=get,put", "rfm=stmlf", "deq=500", "fop=dfw,tef"
$!
$! Executables
$ define /user VMS_OPEN_ARGS_1 ".EXE.SO.SFX_AXPEXE.SFX_VAXEXE", -
"ctx=stm", "rfm=fix", "rat=none", "mrs=512"
$!
$! VMS savesets
$ define /user VMS_OPEN_ARGS_2 ".BCK.SAV", -
"ctx=stm", "rfm=fix", "rat=none", "mrs=32256"
$!
$! Binary files. STM doesn't work, needs to be STMLF.
$ define /user VMS_OPEN_ARGS_3 "..DB.GIF.JAR.JPG.MAB.MFASL.MSF.WAV.XPM.XPT", -
"ctx=stm", "rfm=stmlf", "rat=none"
$!
$! Text files - covered by the catchall
$! ".BAK.COM.CSS.DAT.DTD.HTM.HTML.JS.RDF.NET.ORG.SH.SRC.TBL.TXT.XML.XUL"
$!
$ define /user VMS_OPEN_ARGS_4 " ",-
"rfm=stmlf", "rat=cr"
$!
$ if f$trnlnm("USER") .eqs. "" then define /user user "''moz_user'"
$ if f$trnlnm("LOGNAME") .eqs. "" then define /user logname "''moz_user'"
$ define /user MOZILLA_FIVE_HOME "''moz_unix'"
$ define /user VMS_USE_VMS_DEF_PROT 1
$ define /user VMS_ACCESS_FIX_WOK 1
$! define /user VMS_FILE_OPEN_MODE 3
$! define /user VMS_POLL_TIMER_MIN 10
$! define /user VMS_POLL_TIMER_DELTA 0
$! define /user VMS_POLL_TIMER_MAX 200
$! define /user NSPR_LOG_MODULES "all:5"
$! define /user NSPR_LOG_FILE dkb100:[work]log.log
$! define /user VMS_TRACE_FILENAMES 1
$!
$ define /user DECC$EFS_CASE_PRESERVE 0
$!
$! GTK key mapping mode: 0=none, 1=LK, 2=PC
$ if f$trnlnm("GTK_KEY_MAPPING_MODE") .eqs. "" then -
define /user GTK_KEY_MAPPING_MODE 1
$!
$ write sys$output "Starting ''moz_image'..."
$ mcr 'moz_dir''moz_image'. 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8'
$ set default 'moz_dir'
$ if f$search("[.chrome]*.*;-1") .nes. ""
$ then
$ set default [.chrome]
$ moz_chrome = f$environment("default")
$ purge 'moz_chrome'
$ moz_ver = f$parse(f$search("''moz_chrome'all-skins.rdf"),,,"version") - ";"
$ if moz_ver .gt. 10000 then rename 'moz_chrome'*.rdf *.*;1
$ endif
$!
$ moz_keep = f$trnlnm("MOZILLA_PURGE_KEEP")
$ if moz_keep .eqs. "" then moz_keep = "5"
$ set default sys$login
$ if f$search("[._MOZILLA.*]*.*") .nes. ""
$ then
$ purge /keep='moz_keep' [._mozilla.*...]
$ endif
$ set default 'moz_cwd'
$!
$ exit

View File

@ -434,23 +434,6 @@ ifeq ($(SOLARIS_SUNPRO_CXX),1)
GARBAGE_DIRS += SunWS_cache
endif
ifeq ($(OS_ARCH),OpenVMS)
GARBAGE += $(wildcard *.*_defines)
ifdef SHARED_LIBRARY
VMS_SYMVEC_FILE = $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt)
ifdef MOZ_DEBUG
VMS_SYMVEC_FILE_MODULE = $(topsrcdir)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_dbg_symvec.opt))
else
VMS_SYMVEC_FILE_MODULE = $(topsrcdir)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt))
endif
VMS_SYMVEC_FILE_COMP = $(topsrcdir)/build/unix/vms/component_symvec.opt
GARBAGE += $(VMS_SYMVEC_FILE)
ifdef IS_COMPONENT
DSO_LDOPTS := $(filter-out -auto_symvec,$(DSO_LDOPTS)) $(VMS_SYMVEC_FILE)
endif
endif
endif
XPIDL_GEN_DIR = _xpidlgen
ifdef MOZ_UPDATE_XTERM
@ -1180,20 +1163,6 @@ $(SHARED_LIBRARY): $(OBJS) $(LOBJS) $(DEF_FILE) $(RESFILE) $(SHARED_LIBRARY_LIBS
ifndef INCREMENTAL_LINKER
rm -f $@
endif
ifeq ($(OS_ARCH),OpenVMS)
@if test ! -f $(VMS_SYMVEC_FILE); then \
if test -f $(VMS_SYMVEC_FILE_MODULE); then \
echo Creating specific component options file $(VMS_SYMVEC_FILE); \
cp $(VMS_SYMVEC_FILE_MODULE) $(VMS_SYMVEC_FILE); \
fi; \
fi
ifdef IS_COMPONENT
@if test ! -f $(VMS_SYMVEC_FILE); then \
echo Creating generic component options file $(VMS_SYMVEC_FILE); \
cp $(VMS_SYMVEC_FILE_COMP) $(VMS_SYMVEC_FILE); \
fi
endif
endif # OpenVMS
ifdef DTRACE_LIB_DEPENDENT
ifndef XP_MACOSX
dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS))

View File

@ -1343,9 +1343,6 @@ UNIX_SYSTEM_V)
;;
OSF1)
;;
*OpenVMS*)
HOST_OS_ARCH=OpenVMS
;;
OS_2)
HOST_OS_ARCH=OS2
;;
@ -1434,11 +1431,6 @@ OSF1)
;;
esac
;;
*OpenVMS*)
OS_ARCH=OpenVMS
OS_RELEASE=`uname -v`
OS_TEST=`uname -p`
;;
OS_2)
OS_ARCH=OS2
OS_TARGET=OS2
@ -2614,25 +2606,6 @@ ia64*-hpux*)
fi
;;
*-openvms*)
AC_DEFINE(NO_PW_GECOS)
AC_DEFINE(NO_UDSOCK)
AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
USE_PTHREADS=1
MKSHLIB_FORCE_ALL='-all'
MKSHLIB_UNFORCE_ALL='-none'
AS='as'
AS_DASH_C_FLAG='-Wc/names=as_is'
AR_FLAGS='c $@'
DSO_LDOPTS='-shared -auto_symvec'
DSO_PIC_CFLAGS=
MOZ_DEBUG_LDFLAGS='-g'
COMPAQ_CXX=1
CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
;;
*-os2*)
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
@ -2895,9 +2868,6 @@ case "$target" in
*-aix4.3*|*-aix5*)
NO_LD_ARCHIVE_FLAGS=
;;
*-openvms*)
NO_LD_ARCHIVE_FLAGS=
;;
*-mingw*|*-wince|*-winmo)
if test -z "$GNU_CC"; then
NO_LD_ARCHIVE_FLAGS=
@ -8245,11 +8215,7 @@ MOZ_ARG_DISABLE_BOOL(md,
fi])
if test "$_cpp_md_flag"; then
COMPILER_DEPEND=1
if test "$OS_ARCH" = "OpenVMS"; then
_DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
else
_DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(basename $(@F)).pp)'
fi
_DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(basename $(@F)).pp)'
dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
if test "$SOLARIS_SUNPRO_CC"; then
_DEPEND_CFLAGS=
@ -9297,8 +9263,6 @@ dnl ========================================================
if test "$OS_ARCH" = "Darwin"; then
AC_DEFINE(XP_UNIX)
AC_DEFINE(UNIX_ASYNC_DNS)
elif test "$OS_ARCH" = "OpenVMS"; then
AC_DEFINE(XP_UNIX)
elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
AC_DEFINE(XP_UNIX)
AC_DEFINE(UNIX_ASYNC_DNS)
@ -9435,8 +9399,6 @@ dnl If it fails, nothing is set and config.status will run as usual.
dnl
dnl This does not change the $MAKEFILES variable.
dnl
dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
dnl
echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
. ./conftest.sh
rm conftest.sh

View File

@ -99,7 +99,3 @@ ifndef GNU_CC
DEFINES += -D_TIME_H=1
endif
endif
ifeq ($(OS_ARCH), OpenVMS)
DEFINES += -DGENERIC_MOTIF_REDEFINES
endif

View File

@ -652,7 +652,7 @@ LIBS += C:/Program\ Files/Intel/VTune/Analyzer/Lib/VtuneApi.lib
endif
# HP-UX does not require the extra linking of "-lm"
ifeq (,$(filter HP-UX WINNT WINCE OpenVMS OS2,$(OS_ARCH)))
ifeq (,$(filter HP-UX WINNT WINCE OS2,$(OS_ARCH)))
EXTRA_LIBS += -lm
endif

View File

@ -434,23 +434,6 @@ ifeq ($(SOLARIS_SUNPRO_CXX),1)
GARBAGE_DIRS += SunWS_cache
endif
ifeq ($(OS_ARCH),OpenVMS)
GARBAGE += $(wildcard *.*_defines)
ifdef SHARED_LIBRARY
VMS_SYMVEC_FILE = $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt)
ifdef MOZ_DEBUG
VMS_SYMVEC_FILE_MODULE = $(topsrcdir)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_dbg_symvec.opt))
else
VMS_SYMVEC_FILE_MODULE = $(topsrcdir)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt))
endif
VMS_SYMVEC_FILE_COMP = $(topsrcdir)/build/unix/vms/component_symvec.opt
GARBAGE += $(VMS_SYMVEC_FILE)
ifdef IS_COMPONENT
DSO_LDOPTS := $(filter-out -auto_symvec,$(DSO_LDOPTS)) $(VMS_SYMVEC_FILE)
endif
endif
endif
XPIDL_GEN_DIR = _xpidlgen
ifdef MOZ_UPDATE_XTERM
@ -1180,20 +1163,6 @@ $(SHARED_LIBRARY): $(OBJS) $(LOBJS) $(DEF_FILE) $(RESFILE) $(SHARED_LIBRARY_LIBS
ifndef INCREMENTAL_LINKER
rm -f $@
endif
ifeq ($(OS_ARCH),OpenVMS)
@if test ! -f $(VMS_SYMVEC_FILE); then \
if test -f $(VMS_SYMVEC_FILE_MODULE); then \
echo Creating specific component options file $(VMS_SYMVEC_FILE); \
cp $(VMS_SYMVEC_FILE_MODULE) $(VMS_SYMVEC_FILE); \
fi; \
fi
ifdef IS_COMPONENT
@if test ! -f $(VMS_SYMVEC_FILE); then \
echo Creating generic component options file $(VMS_SYMVEC_FILE); \
cp $(VMS_SYMVEC_FILE_COMP) $(VMS_SYMVEC_FILE); \
fi
endif
endif # OpenVMS
ifdef DTRACE_LIB_DEPENDENT
ifndef XP_MACOSX
dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS))

View File

@ -1320,9 +1320,6 @@ UNIX_SYSTEM_V)
;;
OSF1)
;;
*OpenVMS*)
HOST_OS_ARCH=OpenVMS
;;
OS_2)
HOST_OS_ARCH=OS2
;;
@ -1416,11 +1413,6 @@ OSF1)
;;
esac
;;
*OpenVMS*)
OS_ARCH=OpenVMS
OS_RELEASE=`uname -v`
OS_TEST=`uname -p`
;;
OS_2)
OS_ARCH=OS2
OS_TARGET=OS2
@ -2530,25 +2522,6 @@ ia64*-hpux*)
fi
;;
*-openvms*)
AC_DEFINE(NO_PW_GECOS)
AC_DEFINE(NO_UDSOCK)
AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
USE_PTHREADS=1
MKSHLIB_FORCE_ALL='-all'
MKSHLIB_UNFORCE_ALL='-none'
AS='as'
AS_DASH_C_FLAG='-Wc/names=as_is'
AR_FLAGS='c $@'
DSO_LDOPTS='-shared -auto_symvec'
DSO_PIC_CFLAGS=
MOZ_DEBUG_LDFLAGS='-g'
COMPAQ_CXX=1
CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
;;
*-os2*)
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
@ -2816,9 +2789,6 @@ case "$target" in
*-aix4.3*|*-aix5*)
NO_LD_ARCHIVE_FLAGS=
;;
*-openvms*)
NO_LD_ARCHIVE_FLAGS=
;;
*-mingw*|*-wince|*-winmo)
if test -z "$GNU_CC"; then
NO_LD_ARCHIVE_FLAGS=
@ -5496,11 +5466,7 @@ MOZ_ARG_DISABLE_BOOL(md,
fi])
if test "$_cpp_md_flag"; then
COMPILER_DEPEND=1
if test "$OS_ARCH" = "OpenVMS"; then
_DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
else
_DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(basename $(@F)).pp)'
fi
_DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(basename $(@F)).pp)'
dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
if test "$SOLARIS_SUNPRO_CC"; then
_DEPEND_CFLAGS=
@ -5857,8 +5823,6 @@ if test "$OS_ARCH" = "Darwin"; then
AC_DEFINE(XP_MACOSX)
AC_DEFINE(XP_UNIX)
AC_DEFINE(UNIX_ASYNC_DNS)
elif test "$OS_ARCH" = "OpenVMS"; then
AC_DEFINE(XP_UNIX)
elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
AC_DEFINE(XP_UNIX)
AC_DEFINE(UNIX_ASYNC_DNS)
@ -5985,8 +5949,6 @@ dnl If it fails, nothing is set and config.status will run as usual.
dnl
dnl This does not change the $MAKEFILES variable.
dnl
dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
dnl
echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
. ./conftest.sh
rm conftest.sh

View File

@ -81,7 +81,7 @@ include $(topsrcdir)/config/rules.mk
GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/, \
mailnews.js editor.js \
aix.js unix.js winpref.js os2prefs.js openvms.js)
aix.js unix.js winpref.js os2prefs.js)
GARBAGE += greprefs.js

View File

@ -3002,32 +3002,6 @@ pref("mousewheel.system_scroll_override_on_root_content.enabled", false);
#endif
#endif
#if OS_ARCH==OpenVMS
pref("mail.use_builtin_movemail", false);
pref("helpers.global_mime_types_file", "/sys$manager/netscape/mime.types");
pref("helpers.global_mailcap_file", "/sys$manager/netscape/mailcap");
pref("helpers.private_mime_types_file", "/sys$login/.mime.types");
pref("helpers.private_mailcaptypes_file", "/sys$login/.mailcap");
pref("applications.telnet", "create /term /detach \"telnet %h %p\"");
pref("applications.tn3270", "create /term /detach \"telnet /term=IBM-3278-5 %h %p\"");
pref("applications.rlogin", "create /term /detach \"rlogin %h\"");
pref("applications.rlogin_with_user", "create /term /detach \"rlogin %h -l %u\"");
/* PostScript module specific (see unix.js for additional configuration details) */
pref("print.postscript.print_command", "print /delete");
/* Print module independent */
pref("print.print_command", "print /delete");
pref("print.print_color", false);
pref("browser.cache.disk.capacity", 4096);
pref("plugin.soname.list", "");
# OpenVMS
#endif
#if OS_ARCH==AIX
// Override default Japanese fonts

View File

@ -128,11 +128,6 @@ ifeq ($(OS_ARCH),WINNT)
OS_LIBS += $(call EXPAND_LIBNAME,version)
endif
ifeq ($(OS_ARCH), OpenVMS)
DEFINES += -DGENERIC_MOTIF_REDEFINES
OS_CXXFLAGS += -Wc,warn=disa=NOSIMPINT
endif
CXXFLAGS += $(TK_CFLAGS)
EXTRA_DSO_LDOPTS += $(TK_LIBS)

View File

@ -226,10 +226,6 @@ ifdef MOZ_OS2_HIGH_MEMORY
DEFAULT_GMAKE_FLAGS += MOZ_OS2_HIGH_MEMORY=1
endif
endif # OS2
# OS_CFLAGS needs to be passed on down.
ifeq ($(OS_ARCH),OpenVMS)
DEFAULT_GMAKE_FLAGS += XCFLAGS="$(OS_CFLAGS)"
endif
ifeq ($(OS_ARCH),Darwin)
# Make nsinstall use absolute symlinks by default when building NSS
# for Mozilla on Mac OS X. (Bugzilla bug 193164)

View File

@ -67,10 +67,6 @@ endif
DEFINES += -D_IMPL_GTKXTBIN_API
ifeq ($(OS_ARCH), OpenVMS)
DEFINES += -DGENERIC_MOTIF_REDEFINES
endif
INCLUDES += \
-I$(srcdir) \
$(NULL)

View File

@ -72,9 +72,5 @@ LIBS = \
include $(topsrcdir)/config/rules.mk
ifeq ($(OS_ARCH), OpenVMS)
DEFINES += -DGENERIC_MOTIF_REDEFINES
endif
XRemoteClient_standalone.$(OBJ_SUFFIX): XRemoteClient.cpp
$(CXX) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $<

View File

@ -195,13 +195,6 @@ endif
ifeq ($(OS_ARCH)$(OS_TEST),OpenBSDalpha)
CPPSRCS := xptcinvoke_alpha_openbsd.cpp xptcstubs_alpha_openbsd.cpp
endif
#
# OpenVMS/Alpha
#
ifeq ($(OS_ARCH)$(CPU_ARCH),OpenVMSAlpha)
CPPSRCS := xptcinvoke_openvms_alpha.cpp xptcstubs_openvms_alpha.cpp
ASFILES := xptcinvoke_asm_openvms_alpha.s xptcstubs_asm_openvms_alpha.s
endif
######################################################################
# ARM
@ -537,19 +530,6 @@ xptcstubs_asm_irix.o: $(DIST)/include/xptcstubsdef.inc $(srcdir)/xptcstubs_asm_i
@if test ! -f ./Makefile.in; then rm -f ./xptcstubs_asm_irix.s; else true; fi
endif
ifeq ($(OS_ARCH),OpenVMS)
# Our assembler wants the include file to be of assembler syntax, not C/C++
# syntax, so we have to massage it slightly.
xptcstubs_asm_openvms_alpha.o: $(DIST)/include/xptcstubsdef.inc $(srcdir)/xptcstubs_asm_openvms_alpha.s
sed \
-e 's/^\(.*_ENTRY\)(\([0-9]*\))/ \1 \2/' \
-e 's/\/\*\(.*\)\*\//; \1/' \
$(DIST)/include/xptcstubsdef.inc > ./xptcstubsdef_asm.vms
$(AS) -o $@ $(ASFLAGS) $(AS_DASH_C_FLAG) $(srcdir)/xptcstubs_asm_openvms_alpha.s
@rm -f ./xptcstubsdef_asm.vms
endif
ifeq ($(OS_ARCH),SunOS)
ifeq (86,$(findstring 86,$(OS_TEST)))
ifndef GNU_CC

View File

@ -1,115 +0,0 @@
; -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
;
; ***** 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 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 *****
;
; XPTC_PUBLIC_API(nsresult)
; XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
; PRUint32 paramCount, nsXPTCVariant* params)
;
.title "INVOKE" "Invoke By Index"
$routine XPTC_InvokeByIndex, kind=stack, saved_regs=<R2,R3,R4>
mov r27,r2 ; Need to set up a base register...
.base r2,$LS ; ...for the LINKAGE_PAIR call
mov r17,r3 ; save methodIndex in r3
mov r18,r4 ; save paramCount in r4
;
; Allocate enough stack space to hold the greater of 6 or "paramCount"+1
; parameters. (+1 for "this" pointer) Room for at least 6 parameters
; is required for storage of those passed via registers.
;
cmplt R18,5,R1 ; paramCount = MAX(5, "paramCount")
cmovne R1,5,R18
s8addq R18,16,R1 ; room for "paramCount"+1 params (8 bytes each)
bic R1,15,R1 ; stack space is rounded up to 0 % 16
subq SP,R1,SP
stq R16,0(SP) ; save "that" (as "this" pointer)
addq SP,8,R16 ; pass stack pointer
mov R4,R17 ; pass original "paramCount
mov R19,R18 ; pass "params"
mov 4,r25 ; argument count
$LINKAGE_PAIR invoke_copy_to_stack
ldq r26,$LP ; get entry point address from linkage pair
ldq r27,$LP+8 ; get procedure descriptor address from lp
jsr r26,r26 ; and call the routine
;
; Copy the first 6 parameters to registers and remove from stack frame.
; Both the integer and floating point registers are set for each parameter
; except the first which is the "this" pointer. (integer only)
; The floating point registers are all set as doubles since the
; invoke_copy_to_stack function should have converted the floats.
;
ldq R16,0(SP) ; integer registers
ldq R17,8(SP)
ldq R18,16(SP)
ldq R19,24(SP)
ldq R20,32(SP)
ldq R21,40(SP)
ldt F17,8(SP) ; floating point registers
ldt F18,16(SP)
ldt F19,24(SP)
ldt F20,32(SP)
ldt F21,40(SP)
addq SP,48,SP ; remove params from stack
;
; Call the virtual function with the constructed stack frame.
; First three methods are always QueryInterface, AddRef and Release.
;
addq r4,1,r25 ; argument count now includes "this"
mov R16,R1 ; load "this"
ldl R1,0(R1) ; load vtable
s4addq r3,0,r28 ; vtable index = "methodIndex" * 4
addq r1,r28,r1
ldl r27,0(r1) ; load procedure value
ldq r26,8(r27) ; load entry point address
jsr r26,r26 ; call virtual function
$return
$end_routine XPTC_InvokeByIndex
.end

View File

@ -1,107 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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 ***** */
/* Platform specific code to invoke XPCOM methods on native objects */
#include "xptcprivate.h"
extern "C" {
/* This is in the ASM file */
XPTC_PUBLIC_API(nsresult)
XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
PRUint32 paramCount, nsXPTCVariant* params);
void
invoke_copy_to_stack(PRUint64* d, PRUint32 paramCount, nsXPTCVariant* s)
{
const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
for(PRUint32 i = 0; i < paramCount; i++, d++, s++)
{
if(s->IsPtrData())
{
*d = (PRUint64)s->ptr;
continue;
}
switch(s->type)
{
/*
** The line for T_U32 may look wrong (we use signed value for an
** unsigned data type), but it is right. Why? The Alpha calling
** standard is defined to sign extend all 32-bit values, regardless
** of whether they are int, unsigned int, or 32-bit pointer. The
** caller must "sign-extend" it by replicating bit 31 in bits 32
** thru 63 (yes, even for unsigned). This is the format that results
** naturally from the LDL instruction, the ADDL instruction, etc.
*/
case nsXPTType::T_I8 : *d = (PRUint64)s->val.i8; break;
case nsXPTType::T_I16 : *d = (PRUint64)s->val.i16; break;
case nsXPTType::T_I32 : *d = (PRUint64)s->val.i32; break;
case nsXPTType::T_I64 : *d = (PRUint64)s->val.i64; break;
case nsXPTType::T_U8 : *d = (PRUint64)s->val.u8; break;
case nsXPTType::T_U16 : *d = (PRUint64)s->val.u16; break;
case nsXPTType::T_U32 : *d = (PRUint64)s->val.i32; break;
case nsXPTType::T_U64 : *d = (PRUint64)s->val.u64; break;
case nsXPTType::T_FLOAT :
if(i < NUM_ARG_REGS)
{
// convert floats to doubles if they are to be passed
// via registers so we can just deal with doubles later
union { PRUint64 u64; double d; } t;
t.d = (double)s->val.f;
*d = t.u64;
}
else
// otherwise copy to stack normally
*d = (PRUint64)s->val.u32;
break;
case nsXPTType::T_DOUBLE : *d = (PRUint64)s->val.u64; break;
case nsXPTType::T_BOOL : *d = (PRUint64)s->val.b; break;
case nsXPTType::T_CHAR : *d = (PRUint64)s->val.c; break;
case nsXPTType::T_WCHAR : *d = (PRUint64)s->val.wc; break;
default:
// all the others are plain pointer types
*d = (PRUint64)s->val.p;
break;
}
}
}
}

View File

@ -1,131 +0,0 @@
; -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
;
; ***** 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) 1999
; the Initial Developer. All Rights Reserved.
;
; Contributor(s):
;
; Alternatively, the contents of this file may be used under the terms of
; either 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 *****
; Implement shared vtbl methods.
.title "STUBS" "Stub Code"
MBIT = "__14nsXPTCStubBasexv" ; this is the mangled part of the name
; The layout of the linkage section is important. First comes
; PrepareAndDispatch, and then the Procedure Descriptors for the stubs. Each
; is known to be 16 bytes long, and we use this fact to be able to locate the
; PrepareAndDispatch linkage pair from any of the stubs.
.PSECT $LINK$, OCTA, NOPIC, CON, REL, LCL, NOSHR, NOEXE, RD, NOWRT
.LINKAGE_PAIR PrepareAndDispatch
LINKOFF = 16 ; first stub lp will be 16 bytes away
; STUB_ENTRY createa a routine nsXPTCStubBase::Stub<n>() where n is the
; argument passed in to STUB_ENTRY. It puts its stub number into R1 and then
; jumps into SharedStub. It does it this way because we don't want to mess
; up the arguments that may be on the stack. In order that we can find
; our way around the linkage section, we subtract our offset from the
; start of the linkage section (LINKOFF) from our own PV, thus giving
; us the PV os the first entry in the linkage section (this should be
; PrepareAndDispatch);
.macro STUB_ENTRY n
$routine Stub'n%MBIT%, kind=null
mov LINKOFF, r1 ; distance from lp for PrepareAndDispatch
subq r27,r1,r27 ; subtract it from address of our proc desc
mov n,r1 ; stub number is passed in r1
br SharedStub ; off to common code
$end_routine
LINKOFF = LINKOFF + 16 ; we just put 16 bytes into linkage section
.endm STUB_ENTRY
; SENTINEL_ENTRY is in the C++ module. We need to define a empty macro
; here to keep the assembler happy.
.macro SENTINEL_ENTRY n
.endm SENTINEL_ENTRY
.PSECT $CODE$, OCTA, PIC, CON, REL, LCL, SHR, EXE, NORD, NOWRT
;
; SharedStub()
; Collects arguments and calls PrepareAndDispatch.
;
; r1 - The "methodIndex"
; r27 - points to the first entry in the linkage section, which by design
; is the linkage pair for PrepareAndDispatch.
;
; Arguments are passed in a non-standard way so that we don't disturb the
; original arguments that were passed in to the stub. Since some args (if
; there were more than 6) will already be on the stack, the stub had to not
; only preserve R16-R21, but also preserve the stack too.
;
SharedStub::
subq sp,96,sp ; get some stack space for the args and saves
stq r26,0(sp) ; save r26 (the return address)
;
; Store arguments passed via registers to the stack.
; Floating point registers are stored as doubles and converted
; to floats in PrepareAndDispatch if necessary.
;
stt f17,16(sp) ; floating point registers
stt f18,24(sp)
stt f19,32(sp)
stt f20,40(sp)
stt f21,48(sp)
stq r17,56(sp) ; integer registers
stq r18,64(sp)
stq r19,72(sp)
stq r20,80(sp)
stq r21,88(sp)
;
; Call PrepareAndDispatch function.
;
mov r1,r17 ; pass "methodIndex"
addq sp,16,r18 ; pass "args"
mov 3,r25 ; number of args into AI
LDQ R26, 0(R27) ; get entry point address from linkage pair
LDQ R27, 8(R27) ; get procedure descriptor address from lp
JSR R26, R26
ldq r26, 0(sp) ; restore return address
addq sp,96,sp ; return stack space
ret r26 ; and we're outta here
.include "xptcstubsdef_asm.vms"
.end

View File

@ -1,147 +0,0 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* ***** 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) 1999
* 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 ***** */
/* Implement shared vtbl methods. */
#include "xptcprivate.h"
extern "C" {
nsresult
PrepareAndDispatch(nsXPTCStubBase* self, uint32 methodIndex, PRUint64* args)
{
const PRUint8 PARAM_BUFFER_COUNT = 16;
const PRUint8 NUM_ARG_REGS = 6-1; // -1 for "this" pointer
nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
nsXPTCMiniVariant* dispatchParams = NULL;
nsIInterfaceInfo* iface_info = NULL;
const nsXPTMethodInfo* info;
PRUint8 paramCount;
PRUint8 i;
nsresult result = NS_ERROR_FAILURE;
NS_ASSERTION(self,"no self");
self->GetInterfaceInfo(&iface_info);
NS_ASSERTION(iface_info,"no interface info");
iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
NS_ASSERTION(info,"no interface info");
paramCount = info->GetParamCount();
// setup variant array pointer
if(paramCount > PARAM_BUFFER_COUNT)
dispatchParams = new nsXPTCMiniVariant[paramCount];
else
dispatchParams = paramBuffer;
NS_ASSERTION(dispatchParams,"no place for params");
// args[0] to args[NUM_ARG_REGS] hold floating point register values
PRUint64* ap = args + NUM_ARG_REGS;
for(i = 0; i < paramCount; i++, ap++)
{
const nsXPTParamInfo& param = info->GetParam(i);
const nsXPTType& type = param.GetType();
nsXPTCMiniVariant* dp = &dispatchParams[i];
if(param.IsOut() || !type.IsArithmetic())
{
dp->val.p = (void*) *ap;
continue;
}
// else
switch(type)
{
case nsXPTType::T_I8 : dp->val.i8 = (PRInt8) *ap; break;
case nsXPTType::T_I16 : dp->val.i16 = (PRInt16) *ap; break;
case nsXPTType::T_I32 : dp->val.i32 = (PRInt32) *ap; break;
case nsXPTType::T_I64 : dp->val.i64 = (PRInt64) *ap; break;
case nsXPTType::T_U8 : dp->val.u8 = (PRUint8) *ap; break;
case nsXPTType::T_U16 : dp->val.u16 = (PRUint16) *ap; break;
case nsXPTType::T_U32 : dp->val.u32 = (PRUint32) *ap; break;
case nsXPTType::T_U64 : dp->val.u64 = (PRUint64) *ap; break;
case nsXPTType::T_FLOAT :
if(i < NUM_ARG_REGS)
{
// floats passed via registers are stored as doubles
// in the first NUM_ARG_REGS entries in args
dp->val.u64 = (PRUint64) args[i];
dp->val.f = (float) dp->val.d; // convert double to float
}
else
dp->val.u32 = (PRUint32) *ap;
break;
case nsXPTType::T_DOUBLE :
// doubles passed via registers are also stored
// in the first NUM_ARG_REGS entries in args
dp->val.u64 = (i < NUM_ARG_REGS) ? args[i] : *ap;
break;
case nsXPTType::T_BOOL : dp->val.b = (PRBool) *ap; break;
case nsXPTType::T_CHAR : dp->val.c = (char) *ap; break;
case nsXPTType::T_WCHAR : dp->val.wc = (PRUnichar) *ap; break;
default:
NS_ERROR("bad type");
break;
}
}
result = self->CallMethod((PRUint16)methodIndex, info, dispatchParams);
NS_RELEASE(iface_info);
if(dispatchParams != paramBuffer)
delete [] dispatchParams;
return result;
}
}
#define STUB_ENTRY(n) /* This is in the ASM file */
#define SENTINEL_ENTRY(n) \
nsresult nsXPTCStubBase::Sentinel##n() \
{ \
NS_ERROR("nsXPTCStubBase::Sentinel called"); \
return NS_ERROR_NOT_IMPLEMENTED; \
}
#include "xptcstubsdef.inc"