summaryrefslogtreecommitdiff
path: root/bridges
diff options
context:
space:
mode:
authorPascal Junck <pjunck@openoffice.org>2004-11-03 08:03:15 +0000
committerPascal Junck <pjunck@openoffice.org>2004-11-03 08:03:15 +0000
commit299c741dda86f1515d12d65a7b74ccd976462656 (patch)
tree61a990777229874546e78b33bd5e91a6eb0b6497 /bridges
parentfacb22674a9f59d042bd1585056133c566628b30 (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.cxx20
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,