diff options
author | Rüdiger Timm <rt@openoffice.org> | 2003-04-23 15:30:27 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2003-04-23 15:30:27 +0000 |
commit | f0a5a4715356b8751447a453be14f939176f25f7 (patch) | |
tree | 1fdd02f931c90abd061e23534fdbfe63661b6de5 | |
parent | dbadb3da20a84178a1f85b4846ac141fcab3d76f (diff) |
INTEGRATION: CWS uno2 (1.2.2); FILE MERGED
2003/03/31 08:54:15 sb 1.2.2.1: #i12721# Fixed stack adjustment in callVirtualMethod (copied fix from ../gcc3_linux_intel/uno2cpp.cxx 1.3.48.1).
-rw-r--r-- | bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx index c915d408fff9..5c296021853c 100644 --- a/bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx @@ -2,9 +2,9 @@ * * $RCSfile: uno2cpp.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: hr $ $Date: 2003-03-18 19:06:53 $ + * last change: $Author: rt $ $Date: 2003-04-23 16:30:27 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -97,7 +97,9 @@ static void callVirtualMethod( if (! pThis) dummy_can_throw_anything("xxx"); // address something volatile long edx = 0, eax = 0; // for register returns + void * stackptr; asm volatile ( + "mov %%esp, %6\n\t" // copy values "mov %0, %%eax\n\t" "mov %%eax, %%edx\n\t" @@ -121,13 +123,11 @@ static void callVirtualMethod( "mov %%eax, %4\n\t" "mov %%edx, %5\n\t" // cleanup stack - "mov %0, %%eax\n\t" - "shl $2, %%eax\n\t" - "add %%eax, %%esp\n\t" + "mov %6, %%esp\n\t" : - : "m"(nStackLongs), "m"(pStackLongs), "m"(pThis), "m"(nVtableIndex), "m"(eax), "m"(edx) + : "m"(nStackLongs), "m"(pStackLongs), "m"(pThis), "m"(nVtableIndex), + "m"(eax), "m"(edx), "m"(stackptr) : "eax", "edx" ); - switch( eReturnType ) { case typelib_TypeClass_HYPER: |