factor out 3 high usage COND_*() API croak() messages on Win32 #23344
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
"COND_WAIT"10+6_pading_to_eight+7_load_eff_addr_PIC_U32+5_call_fn_PIC_U32
is very close in size to
"Perl_die_cwait"15+4_PIC_RVA+4_PIC_RVA+5_call_PIC_U32
but
5_call_PIC_U32 x 5 call_sites_per_dll
is smaller vs
(7_load_eff_addr_PIC_U32 + 5_call_fn_PIC_U32 ) x 5 call_sites_per_dll
I also considered a
PL_die_cond[3]
array of 3 function pointers for a short time, but IIRC some permutation of(MSVC || GCC || Both) && (C89_C99 || C++ || Both)
prohibitsdeclspec noreturn
orattribute noreturn
on a function pointer [data] type. No return vtable methods are plain illegal or longer version "this TC ballot proposal was already rejected 10x, you are now rejected" [that dev is an idiot].Even if I know how to get MSVC or GCC to break its own C/C++ grammar and machine code generate rules, to truly eliminate the stack cleanup epilog after each no return function pointer call. That war crime I did doesn't look like best-in-class production quality C code, so I'm not putting what I did in a PR intended for widespread use FOSS SW.