pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/www/firefox use xpcom code for linux instead of our or...
details: https://anonhg.NetBSD.org/pkgsrc/rev/c1231027a798
branches: trunk
changeset: 511361:c1231027a798
user: taya <taya%pkgsrc.org@localhost>
date: Thu Apr 13 14:47:50 2006 +0000
description:
use xpcom code for linux instead of our original.
fix PR/33181.
diffstat:
www/firefox/distinfo | 6 +-
www/firefox/patches/patch-ac | 9 +-
www/firefox/patches/patch-bu | 180 ------------------------------------
www/firefox/patches/patch-bv | 212 -------------------------------------------
4 files changed, 7 insertions(+), 400 deletions(-)
diffs (truncated from 455 to 300 lines):
diff -r 1f9d6975b4c3 -r c1231027a798 www/firefox/distinfo
--- a/www/firefox/distinfo Thu Apr 13 14:05:34 2006 +0000
+++ b/www/firefox/distinfo Thu Apr 13 14:47:50 2006 +0000
@@ -1,11 +1,11 @@
-$NetBSD: distinfo,v 1.45 2006/02/12 11:04:51 ghen Exp $
+$NetBSD: distinfo,v 1.46 2006/04/13 14:47:50 taya Exp $
SHA1 (firefox-1.5.0.1/firefox-1.5.0.1-source.tar.bz2) = 719a0c5218ead7a4e426612277e1c92c33800d38
RMD160 (firefox-1.5.0.1/firefox-1.5.0.1-source.tar.bz2) = 6e332fb1a7e80ab56d3d6e3de3d203c8c58217bf
Size (firefox-1.5.0.1/firefox-1.5.0.1-source.tar.bz2) = 34705286 bytes
SHA1 (patch-aa) = 5095449d4e979085fc5791b9d0251076b9c969c3
SHA1 (patch-ab) = bcc480ab0f7d1760bf4f26b6464db6b69fa3b4d6
-SHA1 (patch-ac) = d35b8da8ee1a6b42068ece31a1f4659e153b29cd
+SHA1 (patch-ac) = c0cfa9805d883e0761b5bc63b4015cbf1e951eec
SHA1 (patch-ad) = 20f2184a7e5e98b065e884c67e4c17fc52019a79
SHA1 (patch-ae) = fea251aabc772c3d4ad3044c8295af45cc9cab2d
SHA1 (patch-af) = 01e10664fbf20dffa53ecb94be24a421c39b838b
@@ -28,8 +28,6 @@
SHA1 (patch-bq) = 2b29436d138fea4e1941d537be1a636969db9a77
SHA1 (patch-br) = 943b38fef5e7070de7af8a055f05e576039ad8bb
SHA1 (patch-bs) = 79cb84a5ed67780e124e7c595ee4ae6ffc7617a6
-SHA1 (patch-bu) = 0714f658001c363f4abbfb248ac77c4862e3ccf9
-SHA1 (patch-bv) = ef06a6a774c9d4da7b3fbf6f4e274ab042926e49
SHA1 (patch-bx) = 7d524d6d46593ba54f12a75c57822518feee84d0
SHA1 (patch-by) = a6eeccfee4e7e3620be41b315c357575c8bd0635
SHA1 (patch-bz) = 7f939c1717b2df473217da9cf703a37e459731c7
diff -r 1f9d6975b4c3 -r c1231027a798 www/firefox/patches/patch-ac
--- a/www/firefox/patches/patch-ac Thu Apr 13 14:05:34 2006 +0000
+++ b/www/firefox/patches/patch-ac Thu Apr 13 14:47:50 2006 +0000
@@ -1,8 +1,8 @@
-$NetBSD: patch-ac,v 1.7 2005/12/10 13:47:22 taya Exp $
+$NetBSD: patch-ac,v 1.8 2006/04/13 14:47:50 taya Exp $
-diff -ruN ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in ./xpcom/reflect/xptcall/src/md/unix/Makefile.in
+diff -ru ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in ./xpcom/reflect/xptcall/src/md/unix/Makefile.in
--- ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in 2005-06-15 17:32:21.000000000 +0900
-+++ ./xpcom/reflect/xptcall/src/md/unix/Makefile.in 2005-12-04 19:03:04.000000000 +0900
++++ ./xpcom/reflect/xptcall/src/md/unix/Makefile.in 2006-04-09 23:31:15.000000000 +0900
@@ -61,10 +61,13 @@
#
# Lots of Unixish x86 flavors
@@ -13,7 +13,7 @@
CPPSRCS := xptcinvoke_unixish_x86.cpp xptcstubs_unixish_x86.cpp
endif
+ifeq (amd64,$(OS_TEST))
-+CPPSRCS := xptcinvoke_unixish_amd64.cpp xptcstubs_unixish_amd64.cpp
++CPPSRCS := xptcinvoke_x86_64_linux.cpp xptcstubs_x86_64_linux.cpp
+endif
endif
#
@@ -58,3 +58,4 @@
#
# Solaris/SPARC
#
+Only in ./xpcom/reflect/xptcall/src/md/unix: Makefile.in.orig
diff -r 1f9d6975b4c3 -r c1231027a798 www/firefox/patches/patch-bu
--- a/www/firefox/patches/patch-bu Thu Apr 13 14:05:34 2006 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-$NetBSD: patch-bu,v 1.4 2005/12/10 13:47:22 taya Exp $
-
-diff -ruN ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_unixish_amd64.cpp ./xpcom/reflect/xptcall/src/md/unix/xptcinvoke_unixish_amd64.cpp
---- ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_unixish_amd64.cpp 1970-01-01 09:00:00.000000000 +0900
-+++ ./xpcom/reflect/xptcall/src/md/unix/xptcinvoke_unixish_amd64.cpp 2005-12-07 00:07:35.000000000 +0900
-@@ -0,0 +1,174 @@
-+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+// Platform specific code to invoke XPCOM methods on native objects
-+
-+#include "xptcprivate.h"
-+
-+// 6 integral parameters are passed in registers
-+const PRUint32 GPR_COUNT = 6;
-+
-+// 8 floating point parameters are passed in SSE registers
-+const PRUint32 FPR_COUNT = 8;
-+
-+// Remember that these 'words' are 64-bit long
-+static inline void
-+invoke_count_words(PRUint32 paramCount, nsXPTCVariant * s,
-+ PRUint32 & nr_gpr, PRUint32 & nr_fpr, PRUint32 & nr_stack)
-+{
-+ nr_gpr = 1; // skip one GP register for 'that'
-+ nr_fpr = 0;
-+ nr_stack = 0;
-+
-+ /* Compute number of eightbytes of class MEMORY. */
-+ for (uint32 i = 0; i < paramCount; i++, s++) {
-+ if (!s->IsPtrData()
-+ && (s->type == nsXPTType::T_FLOAT || s->type == nsXPTType::T_DOUBLE)) {
-+ if (nr_fpr < FPR_COUNT)
-+ nr_fpr++;
-+ else
-+ nr_stack++;
-+ }
-+ else {
-+ if (nr_gpr < GPR_COUNT)
-+ nr_gpr++;
-+ else
-+ nr_stack++;
-+ }
-+ }
-+}
-+
-+static void
-+invoke_copy_to_stack(PRUint64 * d, PRUint32 paramCount, nsXPTCVariant * s,
-+ PRUint64 * gpregs, double * fpregs)
-+{
-+ PRUint32 nr_gpr = 1; // skip one GP register for 'that'
-+ PRUint32 nr_fpr = 0;
-+ PRUint64 value;
-+
-+ for (uint32 i = 0; i < paramCount; i++, s++) {
-+ if (s->IsPtrData())
-+ value = (PRUint64) s->ptr;
-+ else {
-+ switch (s->type) {
-+ case nsXPTType::T_FLOAT: break;
-+ case nsXPTType::T_DOUBLE: break;
-+ case nsXPTType::T_I8: value = s->val.i8; break;
-+ case nsXPTType::T_I16: value = s->val.i16; break;
-+ case nsXPTType::T_I32: value = s->val.i32; break;
-+ case nsXPTType::T_I64: value = s->val.i64; break;
-+ case nsXPTType::T_U8: value = s->val.u8; break;
-+ case nsXPTType::T_U16: value = s->val.u16; break;
-+ case nsXPTType::T_U32: value = s->val.u32; break;
-+ case nsXPTType::T_U64: value = s->val.u64; break;
-+ case nsXPTType::T_BOOL: value = s->val.b; break;
-+ case nsXPTType::T_CHAR: value = s->val.c; break;
-+ case nsXPTType::T_WCHAR: value = s->val.wc; break;
-+ default: value = (PRUint64) s->val.p; break;
-+ }
-+ }
-+
-+ if (!s->IsPtrData() && s->type == nsXPTType::T_DOUBLE) {
-+ if (nr_fpr < FPR_COUNT)
-+ fpregs[nr_fpr++] = s->val.d;
-+ else {
-+ *((double *)d) = s->val.d;
-+ d++;
-+ }
-+ }
-+ else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) {
-+ if (nr_fpr < FPR_COUNT)
-+ // The value in %xmm register is already prepared to
-+ // be retrieved as a float. Therefore, we pass the
-+ // value verbatim, as a double without conversion.
-+ fpregs[nr_fpr++] = s->val.d;
-+ else {
-+ *((float *)d) = s->val.f;
-+ d++;
-+ }
-+ }
-+ else {
-+ if (nr_gpr < GPR_COUNT)
-+ gpregs[nr_gpr++] = value;
-+ else
-+ *d++ = value;
-+ }
-+ }
-+}
-+
-+extern "C"
-+XPTC_PUBLIC_API(nsresult)
-+XPTC_InvokeByIndex(nsISupports * that, PRUint32 methodIndex,
-+ PRUint32 paramCount, nsXPTCVariant * params)
-+{
-+ PRUint32 nr_gpr, nr_fpr, nr_stack;
-+ invoke_count_words(paramCount, params, nr_gpr, nr_fpr, nr_stack);
-+
-+ // Stack, if used, must be 16-bytes aligned
-+ if (nr_stack)
-+ nr_stack = (nr_stack + 1) & ~1;
-+
-+ // Load parameters to stack, if necessary
-+ PRUint64 *stack = (PRUint64 *) __builtin_alloca(nr_stack * 8);
-+ PRUint64 gpregs[GPR_COUNT];
-+ double fpregs[FPR_COUNT];
-+ invoke_copy_to_stack(stack, paramCount, params, gpregs, fpregs);
-+
-+ // Load FPR registers from fpregs[]
-+ register double d0 asm("xmm0");
-+ register double d1 asm("xmm1");
-+ register double d2 asm("xmm2");
-+ register double d3 asm("xmm3");
-+ register double d4 asm("xmm4");
-+ register double d5 asm("xmm5");
-+ register double d6 asm("xmm6");
-+ register double d7 asm("xmm7");
-+
-+ switch (nr_fpr) {
-+#define ARG_FPR(N) \
-+ case N+1: d##N = fpregs[N];
-+ ARG_FPR(7);
-+ ARG_FPR(6);
-+ ARG_FPR(5);
-+ ARG_FPR(4);
-+ ARG_FPR(3);
-+ ARG_FPR(2);
-+ ARG_FPR(1);
-+ ARG_FPR(0);
-+ case 0:;
-+#undef ARG_FPR
-+ }
-+
-+ // Load GPR registers from gpregs[]
-+ register PRUint64 a0 asm("rdi");
-+ register PRUint64 a1 asm("rsi");
-+ register PRUint64 a2 asm("rdx");
-+ register PRUint64 a3 asm("rcx");
-+ register PRUint64 a4 asm("r8");
-+ register PRUint64 a5 asm("r9");
-+
-+ switch (nr_gpr) {
-+#define ARG_GPR(N) \
-+ case N+1: a##N = gpregs[N];
-+ ARG_GPR(5);
-+ ARG_GPR(4);
-+ ARG_GPR(3);
-+ ARG_GPR(2);
-+ ARG_GPR(1);
-+ case 1: a0 = (PRUint64) that;
-+ case 0:;
-+#undef ARG_GPR
-+ }
-+
-+ // Ensure that assignments to SSE registers won't be optimized away
-+ asm("" ::
-+ "x" (d0), "x" (d1), "x" (d2), "x" (d3),
-+ "x" (d4), "x" (d5), "x" (d6), "x" (d7));
-+
-+ // Get pointer to method
-+ PRUint64 methodAddress = *((PRUint64 *)that);
-+ methodAddress += 8 * methodIndex;
-+ methodAddress = *((PRUint64 *)methodAddress);
-+
-+ typedef PRUint32 (*Method)(PRUint64, PRUint64, PRUint64, PRUint64, PRUint64, PRUint64);
-+ PRUint32 result = ((Method)methodAddress)(a0, a1, a2, a3, a4, a5);
-+ return result;
-+}
diff -r 1f9d6975b4c3 -r c1231027a798 www/firefox/patches/patch-bv
--- a/www/firefox/patches/patch-bv Thu Apr 13 14:05:34 2006 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,212 +0,0 @@
-$NetBSD: patch-bv,v 1.4 2005/12/10 13:47:22 taya Exp $
-
-diff -ruN ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_unixish_amd64.cpp ./xpcom/reflect/xptcall/src/md/unix/xptcstubs_unixish_amd64.cpp
---- ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_unixish_amd64.cpp 1970-01-01 09:00:00.000000000 +0900
-+++ ./xpcom/reflect/xptcall/src/md/unix/xptcstubs_unixish_amd64.cpp 2005-12-04 19:32:22.000000000 +0900
-@@ -0,0 +1,206 @@
-+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+
-+// Implement shared vtbl methods.
-+
-+#include "xptcprivate.h"
-+
-+// The Linux/x86-64 ABI passes the first 6 integral parameters and the
-+// first 8 floating point parameters in registers (rdi, rsi, rdx, rcx,
-+// r8, r9 and xmm0-xmm7), no stack space is allocated for these by the
-+// caller. The rest of the parameters are passed in the callers stack
-+// area.
-+
-+const PRUint32 PARAM_BUFFER_COUNT = 16;
-+const PRUint32 GPR_COUNT = 6;
-+const PRUint32 FPR_COUNT = 8;
-+
-+// PrepareAndDispatch() is called by SharedStub() and calls the actual method.
-+//
-+// - 'args[]' contains the arguments passed on stack
-+// - 'gpregs[]' contains the arguments passed in integer registers
-+// - 'fpregs[]' contains the arguments passed in floating point registers
-+//
-+// The parameters are mapped into an array of type 'nsXPTCMiniVariant'
-+// and then the method gets called.
-+
-+extern "C" nsresult
-+PrepareAndDispatch(nsXPTCStubBase * self, PRUint32 methodIndex,
-+ PRUint64 * args, PRUint64 * gpregs, double *fpregs)
-+{
-+ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
-+ nsXPTCMiniVariant* dispatchParams = NULL;
-+ nsIInterfaceInfo* iface_info = NULL;
-+ const nsXPTMethodInfo* info;
-+ PRUint32 paramCount;
-+ PRUint32 i;
-+ nsresult result = NS_ERROR_FAILURE;
-+
-+ NS_ASSERTION(self,"no self");
-+
-+ self->GetInterfaceInfo(&iface_info);
-+ NS_ASSERTION(iface_info,"no interface info");
-+ if (! iface_info)
-+ return NS_ERROR_UNEXPECTED;
-+
-+ iface_info->GetMethodInfo(PRUint16(methodIndex), &info);
-+ NS_ASSERTION(info,"no method info");
-+ if (! info)
-+ return NS_ERROR_UNEXPECTED;
-+
-+ paramCount = info->GetParamCount();
-+
Home |
Main Index |
Thread Index |
Old Index