Преглед на файлове

* 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 buildderef;override;
           procedure deref;override;
+          function size:asizeint;override;
+          function alignment:shortint;override;
        end;
 
 
@@ -2977,7 +2979,6 @@ implementation
       begin
         inherited create(dt);
         pointeddef:=def;
-        savesize:=sizeof(pint);
       end;
 
 
@@ -2985,7 +2986,6 @@ implementation
       begin
          inherited ppuload(dt,ppufile);
          ppufile.getderef(pointeddefderef);
-         savesize:=sizeof(pint);
       end;
 
 
@@ -3003,6 +3003,18 @@ implementation
       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);
       begin
          inherited ppuwrite(ppufile);
@@ -3154,7 +3166,6 @@ implementation
           result:=tclassrefdef.create(tforwarddef(pointeddef).getcopy)
         else
           result:=tclassrefdef.create(pointeddef);
-        tclassrefdef(result).savesize:=savesize;
       end;