#define OFFSET(s_type, field) ((size_t)&(((s_type*)0)->field))
+#ifdef mingw32_HOST_OS
+#define SIZET_FMT "d"
+#else
+#define SIZET_FMT "zd"
+#endif
+
#if defined(GEN_HASKELL)
-#define def_offset(str, offset) \
- printf("oFFSET_" str " = %zd::Int\n", offset);
+#define def_offset(str, offset) \
+ printf("oFFSET_" str " :: Int\n"); \
+ printf("oFFSET_" str " = %" SIZET_FMT "\n", offset);
#else
#define def_offset(str, offset) \
- printf("#define OFFSET_" str " %zd\n", offset);
+ printf("#define OFFSET_" str " %" SIZET_FMT "\n", offset);
#endif
#if defined(GEN_HASKELL)
struct_field_macro(str)
#if defined(GEN_HASKELL)
-#define def_size(str, size) \
- printf("sIZEOF_" str " = %d::Int\n", size);
+#define def_size(str, size) \
+ printf("sIZEOF_" str " :: Int\n"); \
+ printf("sIZEOF_" str " = %d\n", size);
#else
#define def_size(str, size) \
printf("#define SIZEOF_" str " %d\n", size);
field_offset(Capability, r);
field_offset(Capability, lock);
struct_field(Capability, mut_lists);
+ struct_field(Capability, context_switch);
struct_field(bdescr, start);
struct_field(bdescr, free);
closure_field(StgArrWords, words);
closure_payload(StgArrWords, payload);
- closure_field(StgTSO, link);
+ closure_field(StgTSO, _link);
closure_field(StgTSO, global_link);
closure_field(StgTSO, what_next);
closure_field(StgTSO, why_blocked);
closure_field(StgTVarWatchQueue, next_queue_entry);
closure_field(StgTVarWatchQueue, prev_queue_entry);
+ closure_field(StgTVar, current_value);
+
closure_size(StgWeak);
closure_field(StgWeak,link);
closure_field(StgWeak,key);