2003-08-20 Michael Chastain <mec@shout.net>
authorMichael Chastain <mec@google.com>
Wed, 20 Aug 2003 23:00:06 +0000 (23:00 +0000)
committerMichael Chastain <mec@google.com>
Wed, 20 Aug 2003 23:00:06 +0000 (23:00 +0000)
* gdbtypes.h (struct main_type): Rearrange to save space.

gdb/ChangeLog
gdb/gdbtypes.h

index 2fa84ab..f33d232 100644 (file)
@@ -1,3 +1,7 @@
+2003-08-20  Michael Chastain  <mec@shout.net>
+
+       * gdbtypes.h (struct main_type): Rearrange to save space.
+
 2003-08-20  Michael Snyder  <msnyder@redhat.com>
 
        * trad-frame.c: Comment typo fix.
index e7d755a..554778a 100644 (file)
@@ -272,11 +272,26 @@ enum type_code
 #define TYPE_ADDRESS_CLASS_ALL(t) (TYPE_INSTANCE_FLAGS(t) \
                                   & TYPE_FLAG_ADDRESS_CLASS_ALL)
 
+/* This structure is space-critical.
+   Its layout has been tweaked to reduce the space used.  */
+
 struct main_type
 {
   /* Code for kind of type */
 
-  enum type_code code;
+  ENUM_BITFIELD(type_code) code : 8;
+
+  /* These fields appear at this location because they pack nicely here.  */
+  /* FIXME, these should probably be restricted to a Fortran-specific
+     field in some fashion.  */
+#define BOUND_CANNOT_BE_DETERMINED   5
+#define BOUND_BY_REF_ON_STACK        4
+#define BOUND_BY_VALUE_ON_STACK      3
+#define BOUND_BY_REF_IN_REG          2
+#define BOUND_BY_VALUE_IN_REG        1
+#define BOUND_SIMPLE                 0
+  int upper_bound_type : 4;
+  int lower_bound_type : 4;
 
   /* Name of this type, or NULL if none.
 
@@ -298,17 +313,6 @@ struct main_type
 
   char *tag_name;
 
-  /* FIXME, these should probably be restricted to a Fortran-specific
-     field in some fashion.  */
-#define BOUND_CANNOT_BE_DETERMINED   5
-#define BOUND_BY_REF_ON_STACK        4
-#define BOUND_BY_VALUE_ON_STACK      3
-#define BOUND_BY_REF_IN_REG          2
-#define BOUND_BY_VALUE_IN_REG        1
-#define BOUND_SIMPLE                 0
-  int upper_bound_type;
-  int lower_bound_type;
-
   /* Every type is now associated with a particular objfile, and the
      type is allocated on the type_obstack for that objfile.  One problem
      however, is that there are times when gdb allocates new types while
@@ -340,6 +344,15 @@ struct main_type
 
   short nfields;
 
+  /* Field number of the virtual function table pointer in
+     VPTR_BASETYPE.  If -1, we were unable to find the virtual
+     function table pointer in initial symbol reading, and
+     fill_in_vptr_fieldno should be called to find it if possible.
+
+     Unused if this type does not have virtual functions.  */
+
+  short vptr_fieldno;
+
   /* For structure and union types, a description of each field.
      For set and pascal array types, there is one "field",
      whose type is the domain type of the set or array.
@@ -421,15 +434,6 @@ struct main_type
 
   struct type *vptr_basetype;
 
-  /* Field number of the virtual function table pointer in
-     VPTR_BASETYPE.  If -1, we were unable to find the virtual
-     function table pointer in initial symbol reading, and
-     fill_in_vptr_fieldno should be called to find it if possible.
-
-     Unused if this type does not have virtual functions.  */
-
-  int vptr_fieldno;
-
   /* Slot to point to additional language-specific fields of this type.  */
 
   union type_specific