summaryrefslogtreecommitdiff
path: root/bridges
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2007-03-14 07:25:27 +0000
committerOliver Bolte <obo@openoffice.org>2007-03-14 07:25:27 +0000
commitc8decc44bb01d622f924515326f2754062e0ce87 (patch)
tree9b9f278c615d1d1e539cea86d814b9eae152e208 /bridges
parent93891dc87953082671e7d7014be97312e3657ec1 (diff)
INTEGRATION: CWS sb69 (1.22.34); FILE MERGED
2007/01/29 13:32:15 sb 1.22.34.1: #i51459# Generate more clever snippet code.
Diffstat (limited to 'bridges')
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_sparc/cpp2uno.cxx14
1 files changed, 6 insertions, 8 deletions
diff --git a/bridges/source/cpp_uno/cc50_solaris_sparc/cpp2uno.cxx b/bridges/source/cpp_uno/cc50_solaris_sparc/cpp2uno.cxx
index 9af5ad29b6e8..95f0a0e59118 100644
--- a/bridges/source/cpp_uno/cc50_solaris_sparc/cpp2uno.cxx
+++ b/bridges/source/cpp_uno/cc50_solaris_sparc/cpp2uno.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: cpp2uno.cxx,v $
*
- * $Revision: 1.22 $
+ * $Revision: 1.23 $
*
- * last change: $Author: obo $ $Date: 2006-09-16 15:44:22 $
+ * last change: $Author: obo $ $Date: 2007-03-14 08:25:27 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -421,7 +421,7 @@ namespace {
extern "C" void privateSnippetExecutor();
-int const codeSnippetSize = 32;
+int const codeSnippetSize = 7 * 4;
unsigned char * codeSnippet(
unsigned char * code, sal_Int32 functionIndex, sal_Int32 vtableOffset,
@@ -438,17 +438,15 @@ unsigned char * codeSnippet(
// sethi %hi(privateSnippetExecutor), %l0:
*p++ = 0x21000000
| (reinterpret_cast< unsigned int >(privateSnippetExecutor) >> 10);
- // or %l0, %lo(privateSnippetExecutor), %l0:
- *p++ = 0xA0142000
- | (reinterpret_cast< unsigned int >(privateSnippetExecutor) & 0x3FF);
// sethi %hi(index), %o0:
*p++ = 0x11000000 | (index >> 10);
// or %o0, %lo(index), %o0:
*p++ = 0x90122000 | (index & 0x3FF);
// sethi %hi(vtableOffset), %o1:
*p++ = 0x13000000 | (vtableOffset >> 10);
- // jmpl %l0, %g0:
- *p++ = 0x81C40000;
+ // jmpl %l0, %lo(privateSnippetExecutor), %g0:
+ *p++ = 0x81C42000
+ | (reinterpret_cast< unsigned int >(privateSnippetExecutor) & 0x3FF);
// or %o1, %lo(vtableOffset), %o1:
*p++ = 0x92126000 | (vtableOffset & 0x3FF);
OSL_ASSERT(