Browse Source

* set po_far in the i8086-specific descendants of tprocdef and tprocvardef,
instead of in tabstractprocdef.create; ifdef i8086 removed

git-svn-id: trunk@27544 -

nickysn 11 years ago
parent
commit
b41892f048
2 changed files with 30 additions and 4 deletions
  1. 30 0
      compiler/i8086/symcpu.pas
  2. 0 4
      compiler/symdef.pas

+ 30 - 0
compiler/i8086/symcpu.pas

@@ -88,11 +88,17 @@ type
   end;
   end;
   tcpufloatdefclass = class of tcpufloatdef;
   tcpufloatdefclass = class of tcpufloatdef;
 
 
+  { tcpuprocvardef }
+
   tcpuprocvardef = class(tprocvardef)
   tcpuprocvardef = class(tprocvardef)
+    constructor create(level:byte);override;
   end;
   end;
   tcpuprocvardefclass = class of tcpuprocvardef;
   tcpuprocvardefclass = class of tcpuprocvardef;
 
 
+  { tcpuprocdef }
+
   tcpuprocdef = class(tprocdef)
   tcpuprocdef = class(tprocdef)
+    constructor create(level:byte);override;
   end;
   end;
   tcpuprocdefclass = class of tcpuprocdef;
   tcpuprocdefclass = class of tcpuprocdef;
 
 
@@ -180,6 +186,30 @@ implementation
   uses
   uses
     globals, cpuinfo;
     globals, cpuinfo;
 
 
+{****************************************************************************
+                             tcpuprocdef
+****************************************************************************}
+
+  constructor tcpuprocdef.create(level: byte);
+    begin
+      inherited create(level);
+      { todo: allow using near procs in the far code memory models, like in TP7 }
+      if current_settings.x86memorymodel in x86_far_code_models then
+        procoptions:=procoptions+[po_far];
+    end;
+
+{****************************************************************************
+                             tcpuprocvardef
+****************************************************************************}
+
+  constructor tcpuprocvardef.create(level: byte);
+    begin
+      inherited create(level);
+      { procvars are always far in the far code memory models }
+      if current_settings.x86memorymodel in x86_far_code_models then
+        procoptions:=procoptions+[po_far];
+    end;
+
 {****************************************************************************
 {****************************************************************************
                              tcpupointerdef
                              tcpupointerdef
 ****************************************************************************}
 ****************************************************************************}

+ 0 - 4
compiler/symdef.pas

@@ -4036,10 +4036,6 @@ implementation
          proctypeoption:=potype_none;
          proctypeoption:=potype_none;
          proccalloption:=pocall_none;
          proccalloption:=pocall_none;
          procoptions:=[];
          procoptions:=[];
-{$ifdef i8086}
-         if current_settings.x86memorymodel in x86_far_code_models then
-           procoptions:=procoptions+[po_far];
-{$endif i8086}
          returndef:=voidtype;
          returndef:=voidtype;
          savesize:=sizeof(pint);
          savesize:=sizeof(pint);
          callerargareasize:=0;
          callerargareasize:=0;