Remove the packing I added recently to the Capability structure
authorSimon Marlow <marlowsd@gmail.com>
Fri, 28 Nov 2008 10:50:46 +0000 (10:50 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Fri, 28 Nov 2008 10:50:46 +0000 (10:50 +0000)
The problem is that the packing caused some unaligned loads, which
lead to bus errors on Sparc (and reduced performance elsewhere,
presumably).

rts/Capability.h

index 478b0f1..b6f6440 100644 (file)
@@ -32,11 +32,7 @@ struct Capability_ {
     // code.  During STG execution, the BaseReg register always points
     // to the StgRegTable of the current Capability (&cap->r).
     StgFunTable f;
-    StgRegTable r GNU_ATTRIBUTE(packed);
-       // packed eliminates any padding between f and r.  Not strictly
-       // necessary, but it means the negative offsets for accessing
-       // the fields of f when we are in STG code are as small as
-       // possible.
+    StgRegTable r;
 
     nat no;  // capability number.