Mercurial > pub > dyncall > dyncall
diff dyncallback/dyncall_callback_x86.c @ 364:3bdd326dc269
- Todo entries
- some clarifications in code about GNU thiscalls (which are effectively idential to cdecl calls)
* took away own mode identifier, as aliasing to cdecl now
- cleanups
author | Tassilo Philipp |
---|---|
date | Tue, 14 Apr 2020 19:35:30 +0200 |
parents | 30aae7371373 |
children | ddfb9577a00e |
line wrap: on
line diff
--- a/dyncallback/dyncall_callback_x86.c Tue Apr 14 17:47:33 2020 +0200 +++ b/dyncallback/dyncall_callback_x86.c Tue Apr 14 19:35:30 2020 +0200 @@ -6,7 +6,7 @@ Description: Callback - Implementation for x86 License: - Copyright (c) 2007-2018 Daniel Adler <dadler@uni-goettingen.de>, + Copyright (c) 2007-2020 Daniel Adler <dadler@uni-goettingen.de>, Tassilo Philipp <tphilipp@potion-studios.com> Permission to use, copy, modify, and distribute this software for any @@ -204,14 +204,12 @@ ch = *ptr++; switch(ch) { case DC_SIGCHAR_CC_DEFAULT: mode = DC_CALL_C_DEFAULT; break; - /*@@@ add ellipsis?*/ + case DC_SIGCHAR_CC_THISCALL_GNU: // == cdecl case DC_SIGCHAR_CC_CDECL: mode = DC_CALL_C_X86_CDECL; break; case DC_SIGCHAR_CC_STDCALL: mode = DC_CALL_C_X86_WIN32_STD; break; case DC_SIGCHAR_CC_FASTCALL_MS: mode = DC_CALL_C_X86_WIN32_FAST_MS; break; case DC_SIGCHAR_CC_FASTCALL_GNU: mode = DC_CALL_C_X86_WIN32_FAST_GNU; break; case DC_SIGCHAR_CC_THISCALL_MS: mode = DC_CALL_C_X86_WIN32_THIS_MS; break; - case DC_SIGCHAR_CC_THISCALL_GNU: mode = DC_CALL_C_X86_WIN32_THIS_GNU; break; - case DC_SIGCHAR_CC_SYSCALL: mode = DC_CALL_SYS_DEFAULT; break; } } @@ -226,10 +224,6 @@ pcb->args_vt = &dcArgsVT_default; pcb->stack_cleanup = dcbCleanupSize_x86_std(ptr); break; - case DC_CALL_C_X86_WIN32_THIS_MS: - pcb->args_vt = &dcArgsVT_this_ms; - pcb->stack_cleanup = dcbCleanupSize_x86_this_ms(ptr); - break; case DC_CALL_C_X86_WIN32_FAST_MS: pcb->args_vt = &dcArgsVT_fast_ms; pcb->stack_cleanup = dcbCleanupSize_x86_fast_ms(ptr); @@ -238,6 +232,10 @@ pcb->args_vt = &dcArgsVT_fast_gnu; pcb->stack_cleanup = dcbCleanupSize_x86_fast_gnu(ptr); break; + case DC_CALL_C_X86_WIN32_THIS_MS: + pcb->args_vt = &dcArgsVT_this_ms; + pcb->stack_cleanup = dcbCleanupSize_x86_this_ms(ptr); + break; } #if defined(DC_PLAN9)