This is an automated email from the ASF dual-hosted git repository.

jim pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/openoffice.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 4cc64fb  Merge from AOO42X
4cc64fb is described below

commit 4cc64fb52a43b18d61a6ab8e6f4fcbd5712cecbe
Author: Jim Jagielski <jim...@gmail.com>
AuthorDate: Tue Dec 1 18:12:52 2020 -0500

    Merge from AOO42X
---
 .../source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx | 51 +++++++++++++++++++++-
 .../source/cpp_uno/s5abi_macosx_x86-64/makefile.mk |  7 +--
 2 files changed, 51 insertions(+), 7 deletions(-)

diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx 
b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx
index 9c20b7a..92993cb 100644
--- a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx
+++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/cpp2uno.cxx
@@ -395,7 +395,56 @@ extern "C" typelib_TypeClass cpp_vtable_call(
 }
 
 
//==================================================================================================
-extern "C" void privateSnippetExecutor( ... );
+extern "C" void privateSnippetExecutor( void )
+{
+    asm volatile
+        (
+         "    subq  $160, %rsp\n"
+         "    movq  %r10, -152(%rbp)        # Save (nVtableOffset << 32) + 
nFunctionIndex\n"
+
+         "    movq  %rdi, -112(%rbp)        # Save GP registers\n"
+         "    movq  %rsi, -104(%rbp)\n"
+         "    movq  %rdx, -96(%rbp)\n"
+         "    movq  %rcx, -88(%rbp)\n"
+         "    movq  %r8 , -80(%rbp)\n"
+         "    movq  %r9 , -72(%rbp)\n"
+
+         "    movsd %xmm0, -64(%rbp)        # Save FP registers\n"
+         "    movsd %xmm1, -56(%rbp)\n"
+         "    movsd %xmm2, -48(%rbp)\n"
+         "    movsd %xmm3, -40(%rbp)\n"
+         "    movsd %xmm4, -32(%rbp)\n"
+         "    movsd %xmm5, -24(%rbp)\n"
+         "    movsd %xmm6, -16(%rbp)\n"
+         "    movsd %xmm7, -8(%rbp)\n"
+
+         "    leaq  -144(%rbp), %r9         # 6th param: sal_uInt64 * 
pRegisterReturn\n"
+         "    leaq  16(%rbp), %r8           # 5rd param: void ** ovrflw\n"
+         "    leaq  -64(%rbp), %rcx         # 4th param: void ** fpreg\n"
+         "    leaq  -112(%rbp), %rdx        # 3rd param: void ** gpreg\n"
+         "    movl  -148(%rbp), %esi        # 2nd param: sal_int32 
nVtableOffset\n"
+         "    movl  -152(%rbp), %edi        # 1st param: sal_int32 
nFunctionIndex\n"
+
+         "    call  _cpp_vtable_call\n"
+
+         "    cmp   $10, %rax               # typelib_TypeClass_FLOAT\n"
+         "    je    .Lfloat\n"
+         "    cmp   $11, %rax               # typelib_TypeClass_DOUBLE\n"
+         "    je    .Lfloat\n"
+
+         "    movq  -144(%rbp), %rax        # Return value (int case)\n"
+         "    movq  -136(%rbp), %rdx        # Return value (int case)\n"
+         "    movq  -144(%rbp), %xmm0       # Return value (int case)\n"
+         "    movq  -136(%rbp), %xmm1       # Return value (int case)\n"
+         "    jmp   .Lfinish\n"
+
+         ".Lfloat:\n"
+         "    movlpd    -144(%rbp), %xmm0   # Return value (float/double 
case)\n"
+
+         ".Lfinish:\n"
+         "    addq  $160, %rsp\n"
+         );
+}
 
 const int codeSnippetSize = 24;
 
diff --git a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/makefile.mk 
b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/makefile.mk
index 7f64991..f6fcc98 100644
--- a/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/makefile.mk
+++ b/main/bridges/source/cpp_uno/s5abi_macosx_x86-64/makefile.mk
@@ -48,8 +48,7 @@ SLOFILES= \
        $(SLO)$/abi.obj                 \
        $(SLO)$/except.obj              \
        $(SLO)$/cpp2uno.obj             \
-       $(SLO)$/uno2cpp.obj             \
-       $(SLO)$/call.obj
+       $(SLO)$/uno2cpp.obj
 
 SHL1TARGET= $(TARGET)
 
@@ -70,7 +69,3 @@ SHL1STDLIBS= \
 # --- Targets ------------------------------------------------------
 
 .INCLUDE :  target.mk
-
-$(SLO)$/%.obj: %.s
-    $(CC) -c -o $(SLO)$/$(@:b).o $<
-    touch $@

Reply via email to