X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=includes%2FmkDerivedConstants.c;h=b38f3abe36d7136869de6ef15e5daf3a67a458ca;hp=2fe99b6ba552ebd3903cc5637b9332348b8c39e5;hb=a2a67cd520b9841114d69a87a423dabcb3b4368e;hpb=e7c08550be472eb94a383d4c6115c83e103fcd28 diff --git a/includes/mkDerivedConstants.c b/includes/mkDerivedConstants.c index 2fe99b6..b38f3ab 100644 --- a/includes/mkDerivedConstants.c +++ b/includes/mkDerivedConstants.c @@ -21,10 +21,8 @@ #define THREADED_RTS #include "Rts.h" -#include "RtsFlags.h" -#include "Storage.h" + #include "Stable.h" -#include "OSThreads.h" #include "Capability.h" #include @@ -40,8 +38,9 @@ #endif #if defined(GEN_HASKELL) -#define def_offset(str, offset) \ - printf("oFFSET_" str " = %" SIZET_FMT "::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 " %" SIZET_FMT "\n", offset); @@ -51,15 +50,24 @@ #define ctype(type) /* nothing */ #else #define ctype(type) \ - printf("#define SIZEOF_" #type " %d\n", sizeof(type)); + printf("#define SIZEOF_" #type " %lu\n", (unsigned long)sizeof(type)); #endif #if defined(GEN_HASKELL) #define field_type_(str, s_type, field) /* nothing */ +#define field_type_gcptr_(str, s_type, field) /* nothing */ #else +/* Defining REP_x to be b32 etc + These are both the C-- types used in a load + e.g. b32[addr] + and the names of the CmmTypes in the compiler + b32 :: CmmType +*/ #define field_type_(str, s_type, field) \ - printf("#define REP_" str " I"); \ - printf("%d\n", sizeof (__typeof__(((((s_type*)0)->field)))) * 8); + printf("#define REP_" str " b"); \ + printf("%lu\n", (unsigned long)sizeof (__typeof__(((((s_type*)0)->field)))) * 8); +#define field_type_gcptr_(str, s_type, field) \ + printf("#define REP_" str " gcptr\n"); #endif #define field_type(s_type, field) \ @@ -87,18 +95,19 @@ 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 " = %lu\n", (unsigned long)size); #else #define def_size(str, size) \ - printf("#define SIZEOF_" str " %d\n", size); + printf("#define SIZEOF_" str " %lu\n", (unsigned long)size); #endif #if defined(GEN_HASKELL) #define def_closure_size(str, size) /* nothing */ #else #define def_closure_size(str, size) \ - printf("#define SIZEOF_" str " (SIZEOF_StgHeader+%d)\n", size); + printf("#define SIZEOF_" str " (SIZEOF_StgHeader+%lu)\n", (unsigned long)size); #endif #define struct_size(s_type) \ @@ -134,24 +143,30 @@ closure_payload_macro(str(s_type,field)); /* Byte offset and MachRep for a closure field, minus the header */ +#define closure_field_(str, s_type, field) \ + closure_field_offset_(str,s_type,field) \ + field_type_(str, s_type, field); \ + closure_field_macro(str) + #define closure_field(s_type, field) \ - closure_field_offset(s_type,field) \ - field_type(s_type, field); \ - closure_field_macro(str(s_type,field)) + closure_field_(str(s_type,field),s_type,field) /* Byte offset and MachRep for a closure field, minus the header */ -#define closure_field_(str, s_type, field) \ +#define closure_field_gcptr_(str, s_type, field) \ closure_field_offset_(str,s_type,field) \ - field_type_(str, s_type, field); \ + field_type_gcptr_(str, s_type, field); \ closure_field_macro(str) +#define closure_field_gcptr(s_type, field) \ + closure_field_gcptr_(str(s_type,field),s_type,field) + /* Byte offset for a TSO field, minus the header and variable prof bit. */ #define tso_payload_offset(s_type, field) \ def_offset(str(s_type,field), OFFSET(s_type,field) - sizeof(StgHeader) - sizeof(StgTSOProfInfo)); /* Full byte offset for a TSO field, for use from Cmm */ #define tso_field_offset_macro(str) \ - printf("#define TSO_OFFSET_" str " (SIZEOF_StgHeader+SIZEOF_OPT_StgTSOProfInfo+SIZEOF_OPT_StgTSOParInfo+SIZEOF_OPT_StgTSOGranInfo+SIZEOF_OPT_StgTSODistInfo+OFFSET_" str ")\n"); + printf("#define TSO_OFFSET_" str " (SIZEOF_StgHeader+SIZEOF_OPT_StgTSOProfInfo+OFFSET_" str ")\n"); #define tso_field_offset(s_type, field) \ tso_payload_offset(s_type, field); \ @@ -180,13 +195,12 @@ main(int argc, char *argv[]) #ifndef GEN_HASKELL printf("/* This file is created automatically. Do not edit by hand.*/\n\n"); - printf("#define STD_HDR_SIZE %d\n", sizeofW(StgHeader) - sizeofW(StgProfHeader)); + printf("#define STD_HDR_SIZE %lu\n", (unsigned long)sizeofW(StgHeader) - sizeofW(StgProfHeader)); /* grrr.. PROFILING is on so we need to subtract sizeofW(StgProfHeader) */ - printf("#define PROF_HDR_SIZE %d\n", sizeofW(StgProfHeader)); - printf("#define GRAN_HDR_SIZE %d\n", sizeofW(StgGranHeader)); + printf("#define PROF_HDR_SIZE %lu\n", (unsigned long)sizeofW(StgProfHeader)); - printf("#define BLOCK_SIZE %d\n", BLOCK_SIZE); - printf("#define MBLOCK_SIZE %d\n", MBLOCK_SIZE); + printf("#define BLOCK_SIZE %u\n", BLOCK_SIZE); + printf("#define MBLOCK_SIZE %u\n", MBLOCK_SIZE); printf("\n\n"); #endif @@ -217,19 +231,14 @@ main(int argc, char *argv[]) field_offset(StgRegTable, rHpAlloc); struct_field(StgRegTable, rRet); - // Needed for SMP builds - field_offset(StgRegTable, rmp_tmp_w); - field_offset(StgRegTable, rmp_tmp1); - field_offset(StgRegTable, rmp_tmp2); - field_offset(StgRegTable, rmp_result1); - field_offset(StgRegTable, rmp_result2); - + def_offset("stgEagerBlackholeInfo", FUN_OFFSET(stgEagerBlackholeInfo)); def_offset("stgGCEnter1", FUN_OFFSET(stgGCEnter1)); def_offset("stgGCFun", FUN_OFFSET(stgGCFun)); 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); @@ -273,7 +282,7 @@ main(int argc, char *argv[]) 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); @@ -290,14 +299,8 @@ main(int argc, char *argv[]) tso_field(StgTSO, stack_size); struct_size(StgTSOProfInfo); - struct_size(StgTSOParInfo); - struct_size(StgTSOGranInfo); - struct_size(StgTSODistInfo); opt_struct_size(StgTSOProfInfo,PROFILING); - opt_struct_size(StgTSOParInfo,PAR); - opt_struct_size(StgTSOGranInfo,GRAN); - opt_struct_size(StgTSODistInfo,DIST); closure_field(StgUpdateFrame, updatee); @@ -306,23 +309,23 @@ main(int argc, char *argv[]) closure_size(StgPAP); closure_field(StgPAP, n_args); - closure_field(StgPAP, fun); + closure_field_gcptr(StgPAP, fun); closure_field(StgPAP, arity); closure_payload(StgPAP, payload); thunk_size(StgAP); closure_field(StgAP, n_args); - closure_field(StgAP, fun); + closure_field_gcptr(StgAP, fun); closure_payload(StgAP, payload); thunk_size(StgAP_STACK); closure_field(StgAP_STACK, size); - closure_field(StgAP_STACK, fun); + closure_field_gcptr(StgAP_STACK, fun); closure_payload(StgAP_STACK, payload); thunk_size(StgSelector); - closure_field(StgInd, indirectee); + closure_field_gcptr(StgInd, indirectee); closure_size(StgMutVar); closure_field(StgMutVar, var); @@ -330,6 +333,7 @@ main(int argc, char *argv[]) closure_size(StgAtomicallyFrame); closure_field(StgAtomicallyFrame, code); closure_field(StgAtomicallyFrame, next_invariant_to_check); + closure_field(StgAtomicallyFrame, result); closure_field(StgInvariantCheckQueue, invariant); closure_field(StgInvariantCheckQueue, my_execution); @@ -350,11 +354,14 @@ main(int argc, char *argv[]) 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); closure_field(StgWeak,value); closure_field(StgWeak,finalizer); + closure_field(StgWeak,cfinalizer); closure_size(StgDeadWeak); closure_field(StgDeadWeak,link); @@ -414,11 +421,5 @@ main(int argc, char *argv[]) struct_field(StgAsyncIOResult, errCode); #endif - struct_size(MP_INT); - struct_field(MP_INT,_mp_alloc); - struct_field(MP_INT,_mp_size); - struct_field(MP_INT,_mp_d); - - ctype(mp_limb_t); return 0; }