/basctl/

stro/cib/libreoffice-5-3 LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
path: root/bridges/source/cpp_uno/msvc_win32_arm64/vtableslotcall.S
AgeCommit message (Collapse)Author
2024-04-24Some fixing of msvc_win32_arm64 UNO bridgeStephan Bergmann
For one, the Windows ABI deviates from the generic aarch64 ABI regarding returning class instances by value from non-static member functions, see <https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#return-values>: "The caller shall reserve a block of memory of sufficient size and alignment to hold the result. The address of the memory block shall be passed as an additional argument to the function in x0, or x1 if $this is passed in x0. The callee may modify the result memory block at any point during the execution of the subroutine. The callee returns the address of the memory block in x0." That means RETURN_KIND_HFA_FLOAT and RETURN_KIND_HFA_DOUBLE are not needed, and can be cleaned up in a follow-up commit. And for another, setting up a call stack frame in call() in uno2cpp.cxx for callVirtualFunction() didn't actually work, so go with a slightly less ambitious aproach (as also used by the gcc_linux_aarch64 bridge) and explicitly copy the arguments that end up on the stack around in callVirtualFunction(). This allows CustomTarget_testtools/uno_test to proceed at least as far as the call of getRaiseAttr1(), which still leads to an uncaught css::uno::RuntimeException. Change-Id: I4a8ec09c270864ac4de246d7e8d1f923198236b1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166585 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
2020-09-30bridges: add a Windows Arm64 UNO bridgeJan-Marek Glogowski
Since Microsoft follows the general ARM64 ABI calling conventions, and the SEH exception handling is the same, this result is a mixed port of the gcc3_linux_aarch64 bridge and the refactored x86-64 exception handling. I have no idea, if the complicated 32-bit handling in RaiseInfo() is needed, as the ARM64 trampolines definitly use 64-bit code. But since this is the first working version, I currently don't mind much ;-) There is definitly more potential for refactoring in the whole bridges directory... Change-Id: I9782a2e99c0231cdd1286af156ad312229eccf39 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103642 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>