In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/2e94d7323a4c0ec3134a8d5916645ca41e8bfe00?hp=5fde9fa4cbe66ffa73af8a18a5042cb511c581a4>
- Log ----------------------------------------------------------------- commit 2e94d7323a4c0ec3134a8d5916645ca41e8bfe00 Author: Daniel Dragan <[email protected]> Date: Fri Jul 20 12:37:53 2012 -0400 Add PERL_NO_GET_CONTEXT to Win32CORE Win32CORE is already ithreads aware, but was still making Perl_get_context calls. This fixes that. Smaller machine code is the result. M ext/Win32CORE/Win32CORE.c commit 50e8e1f58c8f44de664c58d031a1fcc6880830c1 Author: Daniel Dragan <[email protected]> Date: Thu Jul 19 14:30:21 2012 -0400 Add MSVC noreturn to inside of the interp 12a2785c7e86f586a05cad9ff90ce673c68c3115 only turned on MSVC noreturn for external DLL XS modules, not inside the interp (perl5**.dll). This commit fixes that. For me (bulk88), with an -O1 build, perl517.dll dropped from 1044KB to 1036KB after applying this. M win32/win32.h commit 03c98af06fb1276cf98494ab176371eeabcdc5a2 Author: Jan Dubois <[email protected]> Date: Mon Jul 30 16:08:01 2012 -0700 Split __declspec(dllimport,noreturn) into 2 parts I thought I did test commit 12a2785c with VC6 and it built without errors, but I can no longer reproduce this. Checking standard CRT headers shows common usage (e.g. for longjmp() in setjmp.h) is "__declspec(dllimport) __declspec(noreturn)", so let's use that one instead. M win32/win32.h ----------------------------------------------------------------------- Summary of changes: ext/Win32CORE/Win32CORE.c | 1 + win32/win32.h | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) mode change 100644 => 100755 win32/win32.h diff --git a/ext/Win32CORE/Win32CORE.c b/ext/Win32CORE/Win32CORE.c index fba6f55..943ca86 100644 --- a/ext/Win32CORE/Win32CORE.c +++ b/ext/Win32CORE/Win32CORE.c @@ -13,6 +13,7 @@ #if defined(__CYGWIN__) && !defined(USEIMPORTLIB) #undef WIN32 #endif +#define PERL_NO_GET_CONTEXT #include "EXTERN.h" #if defined(__CYGWIN__) && !defined(USEIMPORTLIB) #define EXTCONST extern const diff --git a/win32/win32.h b/win32/win32.h old mode 100644 new mode 100755 index 2c821eb..808ea19 --- a/win32/win32.h +++ b/win32/win32.h @@ -67,14 +67,18 @@ # ifdef __cplusplus # define PERL_CALLCONV extern "C" __declspec(dllimport) # ifdef _MSC_VER -# define PERL_CALLCONV_NO_RET extern "C" __declspec(dllimport, noreturn) +# define PERL_CALLCONV_NO_RET extern "C" __declspec(dllimport) __declspec(noreturn) # endif # else # define PERL_CALLCONV __declspec(dllimport) # ifdef _MSC_VER -# define PERL_CALLCONV_NO_RET __declspec(dllimport, noreturn) +# define PERL_CALLCONV_NO_RET __declspec(dllimport) __declspec(noreturn) # endif # endif +#else /* MSVC noreturn support inside the interp */ +# ifdef _MSC_VER +# define PERL_CALLCONV_NO_RET __declspec(noreturn) +# endif #endif #define WIN32_LEAN_AND_MEAN -- Perl5 Master Repository
