diff options
author | simonpj@microsoft.com <unknown> | 2007-04-24 13:30:11 +0000 |
---|---|---|
committer | simonpj@microsoft.com <unknown> | 2007-04-24 13:30:11 +0000 |
commit | a01188d12783adf93b1b6c5a08de1dfa0abf55f2 (patch) | |
tree | 887677238c3611989983dfedbcb00caddabe9f05 /includes | |
parent | fd1375dd261725eb00969a3017b924369c09835c (diff) | |
download | haskell-a01188d12783adf93b1b6c5a08de1dfa0abf55f2.tar.gz |
Make ticky work, at least partly, on 64-bit machines
The ticky StgEntCounter structure was trying to be clever by using a
fixed-width 32-bit field for the registeredp value. But the code generators
are not up to handling structures packed tightly like this (on a 64-bit
architecture); result seg-fault on 64-bit.
Really there should be some complaint from the code generators, not simply
a seg fault.
Anyway I switched to using native words for StgEntCounter fields, and
now at least it works.
Diffstat (limited to 'includes')
-rw-r--r-- | includes/Rts.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/includes/Rts.h b/includes/Rts.h index 59edc09e83..7375798c62 100644 --- a/includes/Rts.h +++ b/includes/Rts.h @@ -270,11 +270,11 @@ extern void stg_exit(int n) GNU_ATTRIBUTE(__noreturn__); -------------------------------------------------------------------------- */ typedef struct _StgEntCounter { - /* krc: StgWord32, not StgWord16, in order to match the code - generator, which doesn't generate anything of that type. */ - StgWord32 registeredp; /* 0 == no, 1 == yes */ - StgWord32 arity; /* arity (static info) */ - StgWord32 stk_args; /* # of args off stack */ + /* Using StgWord for everything, becuase both the C and asm code + generators make trouble if you try to pack things tighter */ + StgWord registeredp; /* 0 == no, 1 == yes */ + StgInt arity; /* arity (static info) */ + StgInt stk_args; /* # of args off stack */ /* (rest of args are in registers) */ char *str; /* name of the thing */ char *arg_kinds; /* info about the args types */ |