diff options
author | Oliver Bolte <obo@openoffice.org> | 2007-03-14 07:25:27 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2007-03-14 07:25:27 +0000 |
commit | c8decc44bb01d622f924515326f2754062e0ce87 (patch) | |
tree | 9b9f278c615d1d1e539cea86d814b9eae152e208 /bridges | |
parent | 93891dc87953082671e7d7014be97312e3657ec1 (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.cxx | 14 |
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( |