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