Browse Source

* typeinfo in typedata is now aligned

florian 20 years ago
parent
commit
f20af0b344
1 changed files with 28 additions and 1 deletions
  1. 28 1
      compiler/symdef.pas

+ 28 - 1
compiler/symdef.pas

@@ -1632,6 +1632,9 @@ implementation
                  rttiList.concat(Tai_const.Create_8bit(tkSString));
                  rttiList.concat(Tai_const.Create_8bit(tkSString));
                  write_rtti_name;
                  write_rtti_name;
                  rttiList.concat(Tai_const.Create_8bit(len));
                  rttiList.concat(Tai_const.Create_8bit(len));
+{$ifdef cpurequiresproperalignment}
+                 rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
+{$endif cpurequiresproperalignment}
               end;
               end;
          end;
          end;
       end;
       end;
@@ -1857,6 +1860,9 @@ implementation
       begin
       begin
          rttiList.concat(Tai_const.Create_8bit(tkEnumeration));
          rttiList.concat(Tai_const.Create_8bit(tkEnumeration));
          write_rtti_name;
          write_rtti_name;
+{$ifdef cpurequiresproperalignment}
+         rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
+{$endif cpurequiresproperalignment}
          case longint(savesize) of
          case longint(savesize) of
             1:
             1:
               rttiList.concat(Tai_const.Create_8bit(otUByte));
               rttiList.concat(Tai_const.Create_8bit(otUByte));
@@ -2033,6 +2039,9 @@ implementation
              otUByte,otUWord,otUByte);
              otUByte,otUWord,otUByte);
         begin
         begin
           write_rtti_name;
           write_rtti_name;
+{$ifdef cpurequiresproperalignment}
+          rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
+{$endif cpurequiresproperalignment}
           rttiList.concat(Tai_const.Create_8bit(byte(trans[typ])));
           rttiList.concat(Tai_const.Create_8bit(byte(trans[typ])));
 {$ifdef cpurequiresproperalignment}
 {$ifdef cpurequiresproperalignment}
          rttilist.concat(Tai_align.Create(4));
          rttilist.concat(Tai_align.Create(4));
@@ -2047,6 +2056,9 @@ implementation
             begin
             begin
               rttiList.concat(Tai_const.Create_8bit(tkInt64));
               rttiList.concat(Tai_const.Create_8bit(tkInt64));
               write_rtti_name;
               write_rtti_name;
+{$ifdef cpurequiresproperalignment}
+              rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
+{$endif cpurequiresproperalignment}
               { low }
               { low }
               rttiList.concat(Tai_const.Create_64bit(int64($80000000) shl 32));
               rttiList.concat(Tai_const.Create_64bit(int64($80000000) shl 32));
               { high }
               { high }
@@ -2056,6 +2068,9 @@ implementation
             begin
             begin
               rttiList.concat(Tai_const.Create_8bit(tkQWord));
               rttiList.concat(Tai_const.Create_8bit(tkQWord));
               write_rtti_name;
               write_rtti_name;
+{$ifdef cpurequiresproperalignment}
+              rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
+{$endif cpurequiresproperalignment}
               { low }
               { low }
               rttiList.concat(Tai_const.Create_64bit(0));
               rttiList.concat(Tai_const.Create_64bit(0));
               { high }
               { high }
@@ -2194,6 +2209,9 @@ implementation
       begin
       begin
          rttiList.concat(Tai_const.Create_8bit(tkFloat));
          rttiList.concat(Tai_const.Create_8bit(tkFloat));
          write_rtti_name;
          write_rtti_name;
+{$ifdef cpurequiresproperalignment}
+         rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
+{$endif cpurequiresproperalignment}
          rttiList.concat(Tai_const.Create_8bit(translate[typ]));
          rttiList.concat(Tai_const.Create_8bit(translate[typ]));
       end;
       end;
 
 
@@ -2787,6 +2805,9 @@ implementation
       begin
       begin
          rttiList.concat(Tai_const.Create_8bit(tkSet));
          rttiList.concat(Tai_const.Create_8bit(tkSet));
          write_rtti_name;
          write_rtti_name;
+{$ifdef cpurequiresproperalignment}
+         rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
+{$endif cpurequiresproperalignment}
          rttiList.concat(Tai_const.Create_8bit(otULong));
          rttiList.concat(Tai_const.Create_8bit(otULong));
 {$ifdef cpurequiresproperalignment}
 {$ifdef cpurequiresproperalignment}
          rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
          rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
@@ -4756,6 +4777,9 @@ implementation
              rttiList.concat(Tai_const.Create_8bit(tkmethod));
              rttiList.concat(Tai_const.Create_8bit(tkmethod));
              write_rtti_name;
              write_rtti_name;
 
 
+{$ifdef cpurequiresproperalignment}
+             rttilist.concat(Tai_align.Create(sizeof(TConstPtrUInt)));
+{$endif cpurequiresproperalignment}
              { write kind of method (can only be function or procedure)}
              { write kind of method (can only be function or procedure)}
              if rettype.def = voidtype.def then
              if rettype.def = voidtype.def then
                methodkind := mkProcedure
                methodkind := mkProcedure
@@ -6331,7 +6355,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.288  2005-01-09 15:05:29  peter
+  Revision 1.289  2005-01-16 14:47:26  florian
+    * typeinfo in typedata is now aligned
+
+  Revision 1.288  2005/01/09 15:05:29  peter
     * fix interface vtbl optimization
     * fix interface vtbl optimization
     * replace ugly pointer construct of ioffset()
     * replace ugly pointer construct of ioffset()