comparison dyncall/dyncall_callvm_mips_n64.c @ 533:71c884e610f0

- integration of patches from Raphael Luba, Thekla, Inc.: * integration of aggregate-by-value (struct, union) support patch for x64 (win and sysv) * windows/x64 asm additions to specify how stack unwinds (help for debuggers, exception handling, etc.) * see Changelog for details - new calling convention modes for thiscalls (platform agnostic, was specific before) * new signature character for platform agnostic thiscalls ('*' / DC_SIGCHAR_CC_THISCALL) - dcCallF(), dcVCallF(), dcArgF() and dcVArgF(): * added support for aggregates-by-value (wasn't part of patch) * change that those functions don't implicitly call dcReset() anymore, which was unflexible (breaking change) - added macros to feature test implementation for aggregate-by-value and syscall support - changed libdyncall_s.lib and libdyncallback_s.lib order in callback test makefiles, as some toolchains are picky about order - doc: * man page updates to describe aggregate interface * manual overview changes to highlight platforms with aggregate-by-value support - test/plain: replaced tests w/ old/stale sctruct interface with new aggregate one
author Tassilo Philipp
date Thu, 21 Apr 2022 13:35:47 +0200
parents ddfb9577a00e
children
comparison
equal deleted inserted replaced
532:d4bf63ab9164 533:71c884e610f0
204 , &dc_callvm_argLong_mips_n64 204 , &dc_callvm_argLong_mips_n64
205 , &dc_callvm_argLongLong_mips_n64 205 , &dc_callvm_argLongLong_mips_n64
206 , &dc_callvm_argFloat_mips_n64 206 , &dc_callvm_argFloat_mips_n64
207 , &dc_callvm_argDouble_mips_n64 207 , &dc_callvm_argDouble_mips_n64
208 , &dc_callvm_argPointer_mips_n64 208 , &dc_callvm_argPointer_mips_n64
209 , NULL /* argStruct */ 209 , NULL /* argAggr */
210 , (DCvoidvmfunc*) &dc_callvm_call_mips_n64 210 , (DCvoidvmfunc*) &dc_callvm_call_mips_n64
211 , (DCboolvmfunc*) &dc_callvm_call_mips_n64 211 , (DCboolvmfunc*) &dc_callvm_call_mips_n64
212 , (DCcharvmfunc*) &dc_callvm_call_mips_n64 212 , (DCcharvmfunc*) &dc_callvm_call_mips_n64
213 , (DCshortvmfunc*) &dc_callvm_call_mips_n64 213 , (DCshortvmfunc*) &dc_callvm_call_mips_n64
214 , (DCintvmfunc*) &dc_callvm_call_mips_n64 214 , (DCintvmfunc*) &dc_callvm_call_mips_n64
215 , (DClongvmfunc*) &dc_callvm_call_mips_n64 215 , (DClongvmfunc*) &dc_callvm_call_mips_n64
216 , (DClonglongvmfunc*) &dc_callvm_call_mips_n64 216 , (DClonglongvmfunc*) &dc_callvm_call_mips_n64
217 , (DCfloatvmfunc*) &dc_callvm_call_mips_n64 217 , (DCfloatvmfunc*) &dc_callvm_call_mips_n64
218 , (DCdoublevmfunc*) &dc_callvm_call_mips_n64 218 , (DCdoublevmfunc*) &dc_callvm_call_mips_n64
219 , (DCpointervmfunc*) &dc_callvm_call_mips_n64 219 , (DCpointervmfunc*) &dc_callvm_call_mips_n64
220 , NULL /* callStruct */ 220 , NULL /* callAggr */
221 , NULL /* beginAggr */
221 }; 222 };
222 223
223 DCCallVM_vt gVT_mips_n64_ellipsis = 224 DCCallVM_vt gVT_mips_n64_ellipsis =
224 { 225 {
225 &dc_callvm_free_mips_n64 226 &dc_callvm_free_mips_n64
232 , &dc_callvm_argLong_mips_n64 233 , &dc_callvm_argLong_mips_n64
233 , &dc_callvm_argLongLong_mips_n64 234 , &dc_callvm_argLongLong_mips_n64
234 , &dc_callvm_argFloat_mips_n64_ellipsis 235 , &dc_callvm_argFloat_mips_n64_ellipsis
235 , &dc_callvm_argDouble_mips_n64_ellipsis 236 , &dc_callvm_argDouble_mips_n64_ellipsis
236 , &dc_callvm_argPointer_mips_n64 237 , &dc_callvm_argPointer_mips_n64
237 , NULL /* argStruct */ 238 , NULL /* argAggr */
238 , (DCvoidvmfunc*) &dc_callvm_call_mips_n64 239 , (DCvoidvmfunc*) &dc_callvm_call_mips_n64
239 , (DCboolvmfunc*) &dc_callvm_call_mips_n64 240 , (DCboolvmfunc*) &dc_callvm_call_mips_n64
240 , (DCcharvmfunc*) &dc_callvm_call_mips_n64 241 , (DCcharvmfunc*) &dc_callvm_call_mips_n64
241 , (DCshortvmfunc*) &dc_callvm_call_mips_n64 242 , (DCshortvmfunc*) &dc_callvm_call_mips_n64
242 , (DCintvmfunc*) &dc_callvm_call_mips_n64 243 , (DCintvmfunc*) &dc_callvm_call_mips_n64
243 , (DClongvmfunc*) &dc_callvm_call_mips_n64 244 , (DClongvmfunc*) &dc_callvm_call_mips_n64
244 , (DClonglongvmfunc*) &dc_callvm_call_mips_n64 245 , (DClonglongvmfunc*) &dc_callvm_call_mips_n64
245 , (DCfloatvmfunc*) &dc_callvm_call_mips_n64 246 , (DCfloatvmfunc*) &dc_callvm_call_mips_n64
246 , (DCdoublevmfunc*) &dc_callvm_call_mips_n64 247 , (DCdoublevmfunc*) &dc_callvm_call_mips_n64
247 , (DCpointervmfunc*) &dc_callvm_call_mips_n64 248 , (DCpointervmfunc*) &dc_callvm_call_mips_n64
248 , NULL /* callStruct */ 249 , NULL /* callAggr */
250 , NULL /* beginAggr */
249 }; 251 };
250 252
251 static void dc_callvm_mode_mips_n64(DCCallVM* in_self, DCint mode) 253 static void dc_callvm_mode_mips_n64(DCCallVM* in_self, DCint mode)
252 { 254 {
253 DCCallVM_mips_n64* self = (DCCallVM_mips_n64*)in_self; 255 DCCallVM_mips_n64* self = (DCCallVM_mips_n64*)in_self;