Преглед изворни кода

* use voidpointertype.size (supports i8086 far data memory models) instead of
sizeof(pint) to return the size of tabstractpointerdef

git-svn-id: trunk@27246 -

nickysn пре 11 година
родитељ
комит
97a3f50351
1 измењених фајлова са 14 додато и 3 уклоњено
  1. 14 3
      compiler/symdef.pas

+ 14 - 3
compiler/symdef.pas

@@ -194,6 +194,8 @@ interface
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure ppuwrite(ppufile:tcompilerppufile);override;
           procedure buildderef;override;
           procedure buildderef;override;
           procedure deref;override;
           procedure deref;override;
+          function size:asizeint;override;
+          function alignment:shortint;override;
        end;
        end;
 
 
 
 
@@ -2977,7 +2979,6 @@ implementation
       begin
       begin
         inherited create(dt);
         inherited create(dt);
         pointeddef:=def;
         pointeddef:=def;
-        savesize:=sizeof(pint);
       end;
       end;
 
 
 
 
@@ -2985,7 +2986,6 @@ implementation
       begin
       begin
          inherited ppuload(dt,ppufile);
          inherited ppuload(dt,ppufile);
          ppufile.getderef(pointeddefderef);
          ppufile.getderef(pointeddefderef);
-         savesize:=sizeof(pint);
       end;
       end;
 
 
 
 
@@ -3003,6 +3003,18 @@ implementation
       end;
       end;
 
 
 
 
+    function tabstractpointerdef.size: asizeint;
+      begin
+        Result:=voidpointertype.size;
+      end;
+
+
+    function tabstractpointerdef.alignment: shortint;
+      begin
+        alignment:=size_2_align(voidpointertype.size);
+      end;
+
+
     procedure tabstractpointerdef.ppuwrite(ppufile:tcompilerppufile);
     procedure tabstractpointerdef.ppuwrite(ppufile:tcompilerppufile);
       begin
       begin
          inherited ppuwrite(ppufile);
          inherited ppuwrite(ppufile);
@@ -3154,7 +3166,6 @@ implementation
           result:=tclassrefdef.create(tforwarddef(pointeddef).getcopy)
           result:=tclassrefdef.create(tforwarddef(pointeddef).getcopy)
         else
         else
           result:=tclassrefdef.create(pointeddef);
           result:=tclassrefdef.create(pointeddef);
-        tclassrefdef(result).savesize:=savesize;
       end;
       end;