comparison dyncall/dyncall_callvm_sparc64.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
104 &dc_callvm_argLong_v9, 104 &dc_callvm_argLong_v9,
105 &dc_callvm_argLongLong_v9, 105 &dc_callvm_argLongLong_v9,
106 &dc_callvm_argFloat_v9_ellipsis, 106 &dc_callvm_argFloat_v9_ellipsis,
107 &dc_callvm_argDouble_v9_ellipsis, 107 &dc_callvm_argDouble_v9_ellipsis,
108 &dc_callvm_argPointer_v9, 108 &dc_callvm_argPointer_v9,
109 NULL /* argStruct */, 109 NULL /* argAggr */,
110 (DCvoidvmfunc*) &dcCall_v9, 110 (DCvoidvmfunc*) &dcCall_v9,
111 (DCboolvmfunc*) &dcCall_v9, 111 (DCboolvmfunc*) &dcCall_v9,
112 (DCcharvmfunc*) &dcCall_v9, 112 (DCcharvmfunc*) &dcCall_v9,
113 (DCshortvmfunc*) &dcCall_v9, 113 (DCshortvmfunc*) &dcCall_v9,
114 (DCintvmfunc*) &dcCall_v9, 114 (DCintvmfunc*) &dcCall_v9,
115 (DClongvmfunc*) &dcCall_v9, 115 (DClongvmfunc*) &dcCall_v9,
116 (DClonglongvmfunc*) &dcCall_v9, 116 (DClonglongvmfunc*) &dcCall_v9,
117 (DCfloatvmfunc*) &dcCall_v9, 117 (DCfloatvmfunc*) &dcCall_v9,
118 (DCdoublevmfunc*) &dcCall_v9, 118 (DCdoublevmfunc*) &dcCall_v9,
119 (DCpointervmfunc*) &dcCall_v9, 119 (DCpointervmfunc*) &dcCall_v9,
120 NULL /* callStruct */ 120 NULL /* callAggr */,
121 NULL /* beginAggr */
121 }; 122 };
122 123
123 /* CallVM virtual table. */ 124 /* CallVM virtual table. */
124 DCCallVM_vt gVT_v9 = 125 DCCallVM_vt gVT_v9 =
125 { 126 {
133 &dc_callvm_argLong_v9, 134 &dc_callvm_argLong_v9,
134 &dc_callvm_argLongLong_v9, 135 &dc_callvm_argLongLong_v9,
135 &dc_callvm_argFloat_v9, 136 &dc_callvm_argFloat_v9,
136 &dc_callvm_argDouble_v9, 137 &dc_callvm_argDouble_v9,
137 &dc_callvm_argPointer_v9, 138 &dc_callvm_argPointer_v9,
138 NULL /* argStruct */, 139 NULL /* argAggr */,
139 (DCvoidvmfunc*) &dcCall_v9, 140 (DCvoidvmfunc*) &dcCall_v9,
140 (DCboolvmfunc*) &dcCall_v9, 141 (DCboolvmfunc*) &dcCall_v9,
141 (DCcharvmfunc*) &dcCall_v9, 142 (DCcharvmfunc*) &dcCall_v9,
142 (DCshortvmfunc*) &dcCall_v9, 143 (DCshortvmfunc*) &dcCall_v9,
143 (DCintvmfunc*) &dcCall_v9, 144 (DCintvmfunc*) &dcCall_v9,
144 (DClongvmfunc*) &dcCall_v9, 145 (DClongvmfunc*) &dcCall_v9,
145 (DClonglongvmfunc*) &dcCall_v9, 146 (DClonglongvmfunc*) &dcCall_v9,
146 (DCfloatvmfunc*) &dcCall_v9, 147 (DCfloatvmfunc*) &dcCall_v9,
147 (DCdoublevmfunc*) &dcCall_v9, 148 (DCdoublevmfunc*) &dcCall_v9,
148 (DCpointervmfunc*) &dcCall_v9, 149 (DCpointervmfunc*) &dcCall_v9,
149 NULL /* callStruct */ 150 NULL /* callAggr */,
151 NULL /* beginAggr */
150 }; 152 };
151 153
152 /* mode: only a single mode available currently. */ 154 /* mode: only a single mode available currently. */
153 static void dc_callvm_mode_v9(DCCallVM* in_self, DCint mode) 155 static void dc_callvm_mode_v9(DCCallVM* in_self, DCint mode)
154 { 156 {