X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2FRegs.h;h=0f974ec4ad029f25a10bbcfc750360d36358b540;hb=b0ca990457eaf7991e72b13d0040d937b5759b36;hp=6524c8f669c79a97d965123e5013e939c0a49003;hpb=24311993dfecd6225fb3b26c07d2d054fab5387a;p=ghc-hetmet.git diff --git a/includes/Regs.h b/includes/Regs.h index 6524c8f..0f974ec 100644 --- a/includes/Regs.h +++ b/includes/Regs.h @@ -22,14 +22,6 @@ #ifndef REGS_H #define REGS_H -#if defined(HAVE_FRAMEWORK_GMP) -#include -#elif defined(HAVE_LIB_GMP) -#include -#else -#include "gmp.h" // Needs MP_INT definition -#endif - /* * Spark pools: used to store pending sparks * (THREADED_RTS & PARALLEL_HASKELL only) @@ -79,6 +71,11 @@ typedef union { StgTSOPtr t; } StgUnion; +// Urgh.. we don't know the size of an MP_INT here because we haven't +// #included gmp.h. We should really autoconf this, but GMP may not +// be available at ./configure time if we're building it (GMP) locally. +#define MP_INT_WORDS 3 + /* * This is the table that holds shadow-locations for all the STG * registers. The shadow locations are used when: @@ -117,11 +114,11 @@ typedef struct StgRegTable_ { // rmp_tmp1..rmp_result2 are only used in THREADED_RTS builds to // avoid per-thread temps in bss, but currently always incldue here // so we just run mkDerivedConstants once - StgWord rmp_tmp_w; - MP_INT rmp_tmp1; - MP_INT rmp_tmp2; - MP_INT rmp_result1; - MP_INT rmp_result2; + StgWord rmp_tmp_w[MP_INT_WORDS]; + StgWord rmp_tmp1[MP_INT_WORDS]; + StgWord rmp_tmp2[MP_INT_WORDS]; + StgWord rmp_result1[MP_INT_WORDS]; + StgWord rmp_result2[MP_INT_WORDS]; StgWord rRet; // holds the return code of the thread StgSparkPool rSparks; /* per-task spark pool */ } StgRegTable;