affa333537
Mozilla Thunderbird is a redesign of the Mozilla mail component. The goal is to produce a cross platform stand alone mail application using the XUL user interface language. This version uses the gtk2 toolkit. This package tracks 24 ESR release branch.
126 lines
4.3 KiB
Text
126 lines
4.3 KiB
Text
$NetBSD: patch-xd,v 1.1 2013/11/13 13:27:45 ryoon Exp $
|
|
|
|
NetBSD/sparc64 xptcall support code. From pkgsrc/www/firefox3/files/
|
|
|
|
--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_netbsd.cpp.orig 2012-08-31 13:21:49.000000000 +0000
|
|
+++ mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_sparc64_netbsd.cpp
|
|
@@ -0,0 +1,119 @@
|
|
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
+ *
|
|
+ * The contents of this file are subject to the Netscape 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/NPL/
|
|
+ *
|
|
+ * 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 Netscape are
|
|
+ * Copyright (C) 1999 Netscape Communications Corporation. All
|
|
+ * Rights Reserved.
|
|
+ *
|
|
+ * Contributor(s):
|
|
+ */
|
|
+
|
|
+/* Implement shared vtbl methods. */
|
|
+
|
|
+#include "xptcprivate.h"
|
|
+#include "xptiprivate.h"
|
|
+
|
|
+#if defined(sparc) || defined(__sparc__)
|
|
+
|
|
+extern "C" nsresult
|
|
+PrepareAndDispatch(nsXPTCStubBase* self, PRUint64 methodIndex, PRUint64* args)
|
|
+{
|
|
+
|
|
+#define PARAM_BUFFER_COUNT 16
|
|
+
|
|
+ nsXPTCMiniVariant paramBuffer[PARAM_BUFFER_COUNT];
|
|
+ nsXPTCMiniVariant* dispatchParams = NULL;
|
|
+ const nsXPTMethodInfo* info;
|
|
+ PRUint8 paramCount;
|
|
+ PRUint8 i;
|
|
+ nsresult result = NS_ERROR_FAILURE;
|
|
+
|
|
+ NS_ASSERTION(self,"no self");
|
|
+
|
|
+ self->mEntry->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");
|
|
+ if (!dispatchParams)
|
|
+ return NS_ERROR_OUT_OF_MEMORY;
|
|
+
|
|
+ PRUint64* ap = args;
|
|
+ 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_BOOL : dp->val.b = *((PRInt64*) ap); break;
|
|
+ case nsXPTType::T_CHAR : dp->val.c = *((PRUint64*) ap); break;
|
|
+ case nsXPTType::T_WCHAR : dp->val.wc = *((PRInt64*) ap); break;
|
|
+ case nsXPTType::T_I8 : dp->val.i8 = *((PRInt64*) ap); break;
|
|
+ case nsXPTType::T_I16 : dp->val.i16 = *((PRInt64*) ap); break;
|
|
+ case nsXPTType::T_I32 : dp->val.i32 = *((PRInt64*) ap); break;
|
|
+ case nsXPTType::T_I64 : dp->val.i64 = *((PRInt64*) ap); break;
|
|
+ case nsXPTType::T_U8 : dp->val.u8 = *((PRUint64*) ap); break;
|
|
+ case nsXPTType::T_U16 : dp->val.u16 = *((PRUint64*)ap); break;
|
|
+ case nsXPTType::T_U32 : dp->val.u32 = *((PRUint64*)ap); break;
|
|
+ case nsXPTType::T_U64 : dp->val.u64 = *((PRUint64*) ap); break;
|
|
+ case nsXPTType::T_FLOAT : dp->val.f = ((float*) ap)[1]; break;
|
|
+ case nsXPTType::T_DOUBLE : dp->val.d = *((double*) ap); break;
|
|
+ default:
|
|
+ NS_ASSERTION(0, "bad type");
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ result = self->mOuter->CallMethod((PRUint16)methodIndex, info, dispatchParams);
|
|
+
|
|
+ if(dispatchParams != paramBuffer)
|
|
+ delete [] dispatchParams;
|
|
+
|
|
+ return result;
|
|
+}
|
|
+
|
|
+extern "C" int SharedStub(int, int*);
|
|
+
|
|
+#define STUB_ENTRY(n) \
|
|
+nsresult nsXPTCStubBase::Stub##n() \
|
|
+{ \
|
|
+ int dummy; /* defeat tail-call optimization */ \
|
|
+ return SharedStub(n, &dummy); \
|
|
+}
|
|
+
|
|
+#define SENTINEL_ENTRY(n) \
|
|
+nsresult nsXPTCStubBase::Sentinel##n() \
|
|
+{ \
|
|
+ NS_ASSERTION(0,"nsXPTCStubBase::Sentinel called"); \
|
|
+ return NS_ERROR_NOT_IMPLEMENTED; \
|
|
+}
|
|
+
|
|
+#include "xptcstubsdef.inc"
|
|
+
|
|
+#endif /* sparc || __sparc__ */
|