Author: pfg Date: Fri May 11 16:27:55 2012 New Revision: 1337261 URL: http://svn.apache.org/viewvc?rev=1337261&view=rev Log: Update i386 bridge code on FreeBSD to USE_DOUBLE_MMAP.
Modified: incubator/ooo/trunk/main/bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx Modified: incubator/ooo/trunk/main/bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx?rev=1337261&r1=1337260&r2=1337261&view=diff ============================================================================== --- incubator/ooo/trunk/main/bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx (original) +++ incubator/ooo/trunk/main/bridges/source/cpp_uno/gcc3_freebsd_intel/cpp2uno.cxx Fri May 11 16:27:55 2012 @@ -355,7 +355,7 @@ extern "C" typedef void (*PrivateSnippet int const codeSnippetSize = 16; unsigned char * codeSnippet( - unsigned char * code, sal_Int32 functionIndex, sal_Int32 vtableOffset, + unsigned char * code, sal_PtrDiff writetoexecdiff, sal_Int32 functionIndex, sal_Int32 vtableOffset, typelib_TypeClass returnTypeClass) { if (!bridges::cpp_uno::shared::isSimpleType(returnTypeClass)) { @@ -401,7 +401,7 @@ unsigned char * codeSnippet( // jmp privateSnippetExecutor: *p++ = 0xE9; *reinterpret_cast< sal_Int32 * >(p) - = ((unsigned char *) exec) - p - sizeof (sal_Int32); + = ((unsigned char *) exec) - p - sizeof (sal_Int32) - writetoexecdiff; p += sizeof (sal_Int32); OSL_ASSERT(p - code <= codeSnippetSize); return code + codeSnippetSize; @@ -434,7 +434,7 @@ bridges::cpp_uno::shared::VtableFactory: } unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions( - Slot ** slots, unsigned char * code, + Slot ** slots, unsigned char * code, sal_PtrDiff writetoexecdiff, typelib_InterfaceTypeDescription const * type, sal_Int32 functionOffset, sal_Int32 functionCount, sal_Int32 vtableOffset) { @@ -447,9 +447,9 @@ unsigned char * bridges::cpp_uno::shared switch (member->eTypeClass) { case typelib_TypeClass_INTERFACE_ATTRIBUTE: // Getter: - (s++)->fn = code; + (s++)->fn = code + writetoexecdiff; code = codeSnippet( - code, functionOffset++, vtableOffset, + code, writetoexecdiff, functionOffset++, vtableOffset, reinterpret_cast< typelib_InterfaceAttributeTypeDescription * >( member)->pAttributeTypeRef->eTypeClass); // Setter: @@ -457,17 +457,17 @@ unsigned char * bridges::cpp_uno::shared typelib_InterfaceAttributeTypeDescription * >( member)->bReadOnly) { - (s++)->fn = code; + (s++)->fn = code + writetoexecdiff; code = codeSnippet( - code, functionOffset++, vtableOffset, + code, writetoexecdiff, functionOffset++, vtableOffset, typelib_TypeClass_VOID); } break; case typelib_TypeClass_INTERFACE_METHOD: - (s++)->fn = code; + (s++)->fn = code + writetoexecdiff; code = codeSnippet( - code, functionOffset++, vtableOffset, + code, writetoexecdiff, functionOffset++, vtableOffset, reinterpret_cast< typelib_InterfaceMethodTypeDescription * >( member)->pReturnTypeRef->eTypeClass); break;