diff options
author | Pascal Junck <pjunck@openoffice.org> | 2004-11-03 08:03:15 +0000 |
---|---|---|
committer | Pascal Junck <pjunck@openoffice.org> | 2004-11-03 08:03:15 +0000 |
commit | 299c741dda86f1515d12d65a7b74ccd976462656 (patch) | |
tree | 61a990777229874546e78b33bd5e91a6eb0b6497 /bridges | |
parent | facb22674a9f59d042bd1585056133c566628b30 (diff) |
INTEGRATION: CWS sb22 (1.4.138); FILE MERGED
2004/09/27 14:29:34 sb 1.4.138.1: #i34673# Fixed problem with more aggresive inlining of GCC 3.4.
Diffstat (limited to 'bridges')
-rw-r--r-- | bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_freebsd_intel/uno2cpp.cxx index ede7bec01c00..7be0faf3dde1 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.4 $ + * $Revision: 1.5 $ * - * last change: $Author: hr $ $Date: 2003-04-28 16:28:35 $ + * last change: $Author: pjunck $ $Date: 2004-11-03 09:03:15 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -78,7 +78,21 @@ namespace CPPU_CURRENT_NAMESPACE void dummy_can_throw_anything( char const * ); //================================================================================================== -static void callVirtualMethod( +// The call instruction within the asm section of callVirtualMethod may throw +// exceptions. So that the compiler handles this correctly, it is important +// that (a) callVirtualMethod might call dummy_can_throw_anything (although this +// never happens at runtime), which in turn can throw exceptions, and (b) +// callVirtualMethod is not inlined at its call site (so that any exceptions are +// caught which are thrown from the instruction calling callVirtualMethod): +void callVirtualMethod( + void * pThis, + sal_Int32 nVtableIndex, + void * pRegisterReturn, + typelib_TypeClass eReturnType, + sal_Int32 * pStackLongs, + sal_Int32 nStackLongs ) __attribute__((noinline)); + +void callVirtualMethod( void * pThis, sal_Int32 nVtableIndex, void * pRegisterReturn, |