--
v4: kernelbase: Implement activation context switching for fibers.
ntdll: Implement RtlFreeActivationContextStack().
ntdll: Use ActivationContextStackPointer instead of referencing ActivationContextStack directly.
ntdll: Store current activation context stack pointer into a local variable.
ntdll: Factor out reading current activation context into a helper function.
kernel32/tests: Test for activation context switching between fibers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2435
MSVC doesn't support "name...".
---
msvc also supports __VA_ARGS__ only if /Zc:preprocessor is set to make
its preprocessor "standards conformant" instead of doing whatever msvc
used to do since aeons.
--
v2: d3dx9/tests: Use __VA_ARGS__ instead of GCCs named variadics.
d3dx9: Use __VA_ARGS__ instead of GCCs named variadics.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2666
> I must be missing something, when can dest == src?
If `ActivationContextStackPointer` already equals `dest` (fiber data or TEB). I think it's not possible currently, unless the user tinkers with undocumented fields (which we don't need to support right now).
> Aren't we always moving from the fiber data to the TEB in ConvertFiberToThread()?
Or in the other direction in case of `ConvertThreadToFiber()`, but yes, `dest != src` in that case too.
I'll remove the check, since I realized it would not be necessary even if `dest == src` was indeed true. Thank you for your review.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2435#note_30358
On Mon Apr 17 21:49:22 2023 +0000, Zebediah Figura wrote:
> What's this for?
This is a common idiom for suppressing the `-Wunused-parameter` warning. However, Wine doesn't enable it by default, even in maintainer mode.
I'll remove this line, since compiling Wine with `-Wunused` would already emit unused parameter warnings. Just an old habit of mine, I guess.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2435#note_30356
The motivation for this is twofold.
Firstly, this makes code a little nicer to read, by virtue of removing a
ubiquitous &(...)->node.
Secondly, and more importantly, this allows for the possibility of constructors
returning a different instruction type than intended. The ultimate goal here is
to return a preallocated "error" instruction when allocation fails, instead of
returning NULL and propagating out-of-memory handling to the caller.
--
v3: vkd3d-shader/hlsl: Return an hlsl_ir_node pointer from hlsl_new_if().
vkd3d-shader/hlsl: Pass hlsl_block pointers to hlsl_new_if().
vkd3d-shader/hlsl: Initialize the block in clone_block().
vkd3d-shader/hlsl: Introduce a hlsl_block_cleanup() helper.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/153