[Libreoffice-commits] core.git: bridges/source
Herbert Dürr
hdu at apache.org
Fri Feb 14 16:09:41 CET 2014
bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
New commits:
commit 1e3e7b077f708aefd2e866eca85abc822ae4cd02
Author: Herbert Dürr <hdu at apache.org>
Date: Thu Feb 13 13:21:50 2014 +0000
Resolves: #i124086# preserve 16byte stack alignment...
in gcc3-solaris-intel's uno2cpp bridge
Patch-by: Apostolos Syropoulos <asyropoulos123 at hotmail.com>
Review-by: Herbert Dürr <hdu at apache.org>
(cherry picked from commit 95eeed58af27c63977a43c4d688b1467ef3cf047)
Conflicts:
bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx
Change-Id: I92a151c5d65f685a6249954b84da31471501ff9b
diff --git a/bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx
index 2999fff..3d7ef69 100644
--- a/bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx
+++ b/bridges/source/cpp_uno/gcc3_solaris_intel/uno2cpp.cxx
@@ -39,7 +39,15 @@ namespace
{
//==================================================================================================
-static void callVirtualMethod(
+void callVirtualMethod(
+ void * pAdjustedThisPtr,
+ sal_Int32 nVtableIndex,
+ void * pRegisterReturn,
+ typelib_TypeClass eReturnType,
+ sal_Int32 * pStackLongs,
+ sal_Int32 nStackLongs ) __attribute__((noinline));
+
+void callVirtualMethod(
void * pAdjustedThisPtr,
sal_Int32 nVtableIndex,
void * pRegisterReturn,
@@ -61,6 +69,13 @@ static void callVirtualMethod(
void * stackptr;
asm volatile (
"mov %%esp, %2\n\t"
+ // preserve potential 128bit stack alignment
+ "and $0xfffffff0, %%esp\n\t"
+ "mov %3, %%eax\n\t"
+ "lea -4(,%%eax,4), %%eax\n\t"
+ "and $0xf, %%eax\n\t"
+ "sub $0xc, %%eax\n\t"
+ "add %%eax, %%esp\n\t"
// copy values
"mov %3, %%eax\n\t"
"mov %%eax, %%edx\n\t"
More information about the Libreoffice-commits
mailing list