aboutsummaryrefslogtreecommitdiff
path: root/windows
diff options
context:
space:
mode:
authorPaul Sokolovsky2016-01-29 01:05:53 +0200
committerPaul Sokolovsky2016-01-29 02:13:42 +0200
commitd3b1f0b627ccc6705d9fe958549badb87a74ded1 (patch)
treeccc7d03e2f5cd00bb022f70093ca99915715ba42 /windows
parent850212203a97754bdaf1844b71c8fe8ee905236f (diff)
py/runtime: mp_stack_ctrl_init() should be called immediately on startup.
Calling it from mp_init() is too late for some ports (like Unix), and leads to incomplete stack frame being captured, with following GC issues. So, now each port should call mp_stack_ctrl_init() on its own, ASAP after startup, and taking special precautions so it really was called before stack variables get allocated (because if such variable with a pointer is missed, it may lead to over-collecting (typical symptom is segfaulting)).
Diffstat (limited to 'windows')
-rw-r--r--windows/mpconfigport.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/windows/mpconfigport.h b/windows/mpconfigport.h
index 80166f149..ad79ef381 100644
--- a/windows/mpconfigport.h
+++ b/windows/mpconfigport.h
@@ -178,6 +178,10 @@ extern const struct _mp_obj_module_t mp_module_time;
#include "init.h"
#include "sleep.h"
+#ifdef __GNUC__
+#define MP_NOINLINE __attribute__((noinline))
+#endif
+
// MSVC specifics
#ifdef _MSC_VER
@@ -191,6 +195,7 @@ extern const struct _mp_obj_module_t mp_module_time;
// CL specific overrides from mpconfig
#define NORETURN __declspec(noreturn)
+#define MP_NOINLINE __declspec(noinline)
#define MP_LIKELY(x) (x)
#define MP_UNLIKELY(x) (x)
#define MICROPY_PORT_CONSTANTS { "dummy", 0 } //can't have zero-sized array