implement MZ_DO_NOT_INLINE() for MSVC

For 64-bit builds, MSVC has become smart enough to inline functions
in a way that interferes with the implementation of continuations,
so that (planet "williams/simulation/examples/model-2b") crashes,
for example. Explicitly disabling inlining avoids the problem by
making the C stack layout match the implementation's expectation.
This commit is contained in:
Matthew Flatt 2011-08-29 23:15:45 -06:00
parent 734fc832b7
commit 638dc2ed62

View File

@ -120,6 +120,8 @@ int scheme_num_types(void);
#if MZ_USE_NOINLINE
# define MZ_DO_NOT_INLINE(decl) decl __attribute__ ((noinline));
#elif _MSC_VER
# define MZ_DO_NOT_INLINE(decl) __declspec(noinline) decl;
#else
# define MZ_DO_NOT_INLINE(decl)
#endif