summaryrefslogtreecommitdiff
path: root/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/source/cpp_uno/gcc3_linux_x86-64/abi.hxx')
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_x86-64/abi.hxx20
1 files changed, 13 insertions, 7 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.hxx b/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.hxx
index 915d45b2fc54..3ef80543ac76 100644
--- a/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.hxx
+++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/abi.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_BRIDGES_SOURCE_CPP_UNO_GCC3_LINUX_X86_64_ABI_HXX
-#define INCLUDED_BRIDGES_SOURCE_CPP_UNO_GCC3_LINUX_X86_64_ABI_HXX
+#pragma once
// This is an implementation of the x86-64 ABI as described in 'System V
// Application Binary Interface, AMD64 Architecture Processor Supplement'
@@ -42,7 +41,7 @@ const sal_uInt32 MAX_SSE_REGS = 8;
Return false iff parameter should be passed in memory.
*/
-bool examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInReturn, int &nUsedGPR, int &nUsedSSE ) throw ();
+bool examine_argument( typelib_TypeDescriptionReference *pTypeRef, int &nUsedGPR, int &nUsedSSE ) noexcept;
/** Does function that returns this type use a hidden parameter, or registers?
@@ -50,12 +49,19 @@ bool examine_argument( typelib_TypeDescriptionReference *pTypeRef, bool bInRetur
pointer to a structure allocated by the caller), or in registers (rax, rdx
for the integers, xmm0, xmm1 for the floating point numbers).
*/
-bool return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef ) throw ();
+bool return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef ) noexcept;
-void fill_struct( typelib_TypeDescriptionReference *pTypeRef, const sal_uInt64* pGPR, const double* pSSE, void *pStruct ) throw ();
+enum class ReturnKind {
+ Memory,
+ RegistersGeneral,
+ RegistersFpInt,
+ RegistersIntFp
+};
-} // namespace x86_64
+ReturnKind getReturnKind(typelib_TypeDescriptionReference * type) noexcept;
+
+void fill_struct( typelib_TypeDescriptionReference *pTypeRef, const sal_uInt64* pGPR, const double* pSSE, void *pStruct ) noexcept;
-#endif // INCLUDED_BRIDGES_SOURCE_CPP_UNO_GCC3_LINUX_X86_64_ABI_HXX
+} // namespace x86_64
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */