Browse Source

+ changeregsize -> makeregsize

carl 23 years ago
parent
commit
f3c2dfa604
1 changed files with 24 additions and 29 deletions
  1. 24 29
      compiler/regvars.pas

+ 24 - 29
compiler/regvars.pas

@@ -49,17 +49,11 @@ implementation
       globtype,systems,comphook,
       globtype,systems,comphook,
       cutils,cclasses,verbose,globals,
       cutils,cclasses,verbose,globals,
       symconst,symbase,symtype,symdef,types,
       symconst,symbase,symtype,symdef,types,
-      tainst,cgbase,cpuasm,cgobj,cgcpu,cga,rgcpu;
+      tainst,cgbase,cpuasm,cgobj, cgcpu,cga,rgcpu;
 
 
     var
     var
       parasym : boolean;
       parasym : boolean;
 
 
-{$ifndef i386}
-    function makereg32(const reg: tregister): tregister;
-      begin
-        makereg32 := reg;
-      end;
-{$endif i386}
 
 
     procedure searchregvars(p : tnamedindexitem);
     procedure searchregvars(p : tnamedindexitem);
       var
       var
@@ -187,20 +181,18 @@ implementation
                            regvarinfo^.regvars[i].reg:=varregs[i];
                            regvarinfo^.regvars[i].reg:=varregs[i];
                         end
                         end
                       else
                       else
-{$ifdef i386}
                        if (regvarinfo^.regvars[i].vartype.def.deftype in [orddef,enumdef]) and
                        if (regvarinfo^.regvars[i].vartype.def.deftype in [orddef,enumdef]) and
                           (torddef(regvarinfo^.regvars[i].vartype.def).size=1) then
                           (torddef(regvarinfo^.regvars[i].vartype.def).size=1) then
                         begin
                         begin
-                          regvarinfo^.regvars[i].reg:=changeregsize(varregs[i],S_B);
+                          regvarinfo^.regvars[i].reg:=rg.makeregsize(varregs[i],OS_8);
                         end
                         end
                       else
                       else
                        if (regvarinfo^.regvars[i].vartype.def.deftype in [orddef,enumdef]) and
                        if (regvarinfo^.regvars[i].vartype.def.deftype in [orddef,enumdef]) and
                           (torddef(regvarinfo^.regvars[i].vartype.def).size=2) then
                           (torddef(regvarinfo^.regvars[i].vartype.def).size=2) then
                          begin
                          begin
-                           regvarinfo^.regvars[i].reg:=changeregsize(varregs[i],S_W);
+                           regvarinfo^.regvars[i].reg:=rg.makeregsize(varregs[i],OS_16);
                          end
                          end
                       else
                       else
-{$endif i386}
                         begin
                         begin
                           regvarinfo^.regvars[i].reg:=varregs[i];
                           regvarinfo^.regvars[i].reg:=varregs[i];
                         end;
                         end;
@@ -275,9 +267,9 @@ implementation
         exit;
         exit;
       for i := 1 to maxvarregs do
       for i := 1 to maxvarregs do
         if assigned(regvarinfo^.regvars[i]) and
         if assigned(regvarinfo^.regvars[i]) and
-           (changeregsize(regvarinfo^.regvars[i].reg,S_L) = reg) then
+           (rg.makeregsize(regvarinfo^.regvars[i].reg,OS_INT) = reg) then
           begin
           begin
-            if rg.regvar_loaded[changeregsize(reg,S_L)] then
+            if rg.regvar_loaded[rg.makeregsize(reg,OS_INT)] then
               begin
               begin
                 vsym := tvarsym(regvarinfo^.regvars[i]);
                 vsym := tvarsym(regvarinfo^.regvars[i]);
                 { we only have to store the regvar back to memory if it's }
                 { we only have to store the regvar back to memory if it's }
@@ -292,8 +284,8 @@ implementation
                     hr.base:=procinfo^.framepointer;
                     hr.base:=procinfo^.framepointer;
                     cg.a_load_reg_ref(asml,def_cgsize(vsym.vartype.def),vsym.reg,hr);
                     cg.a_load_reg_ref(asml,def_cgsize(vsym.vartype.def),vsym.reg,hr);
                   end;
                   end;
-                asml.concat(Tairegalloc.dealloc(changeregsize(reg,S_L)));
-                rg.regvar_loaded[changeregsize(reg,S_L)] := false;
+                asml.concat(Tairegalloc.dealloc(rg.makeregsize(reg,OS_INT)));
+                rg.regvar_loaded[rg.makeregsize(reg,OS_INT)] := false;
               end;
               end;
             break;
             break;
           end;
           end;
@@ -303,12 +295,12 @@ implementation
     var
     var
       hr: treference;
       hr: treference;
       opsize: tcgsize;
       opsize: tcgsize;
-      reg32 : tregister;
+      reg : tregister;
     begin
     begin
-      reg32:=changeregsize(vsym.reg,S_L);
-      if not rg.regvar_loaded[reg32] then
+      reg:=rg.makeregsize(vsym.reg,OS_INT);
+      if not rg.regvar_loaded[reg] then
         begin
         begin
-          asml.concat(Tairegalloc.alloc(reg32));
+          asml.concat(Tairegalloc.alloc(reg));
           reference_reset(hr);
           reference_reset(hr);
           if vsym.owner.symtabletype in [inlinelocalsymtable,localsymtable] then
           if vsym.owner.symtabletype in [inlinelocalsymtable,localsymtable] then
             hr.offset:=-vsym.address+vsym.owner.address_fixup
             hr.offset:=-vsym.address+vsym.owner.address_fixup
@@ -321,8 +313,8 @@ implementation
             opsize := OS_ADDR
             opsize := OS_ADDR
           else
           else
             opsize := def_cgsize(vsym.vartype.def);
             opsize := def_cgsize(vsym.vartype.def);
-          cg.a_load_ref_reg(asml,opsize,hr,reg32);
-          rg.regvar_loaded[reg32] := true;
+          cg.a_load_ref_reg(asml,opsize,hr,reg);
+          rg.regvar_loaded[reg] := true;
         end;
         end;
     end;
     end;
 
 
@@ -330,15 +322,15 @@ implementation
     var
     var
       i: longint;
       i: longint;
       regvarinfo: pregvarinfo;
       regvarinfo: pregvarinfo;
-      reg32 : tregister;
+      reg_spare : tregister;
     begin
     begin
       regvarinfo := pregvarinfo(aktprocdef.regvarinfo);
       regvarinfo := pregvarinfo(aktprocdef.regvarinfo);
       if not assigned(regvarinfo) then
       if not assigned(regvarinfo) then
         exit;
         exit;
-      reg32 := changeregsize(reg,S_L);
+      reg_spare := rg.makeregsize(reg,OS_INT);
       for i := 1 to maxvarregs do
       for i := 1 to maxvarregs do
         if assigned(regvarinfo^.regvars[i]) and
         if assigned(regvarinfo^.regvars[i]) and
-           (changeregsize(regvarinfo^.regvars[i].reg,S_L) = reg32) then
+           (rg.makeregsize(regvarinfo^.regvars[i].reg,OS_INT) = reg_spare) then
           load_regvar(asml,tvarsym(regvarinfo^.regvars[i]))
           load_regvar(asml,tvarsym(regvarinfo^.regvars[i]))
     end;
     end;
 
 
@@ -439,7 +431,7 @@ implementation
     procedure cleanup_regvars(asml: TAAsmoutput);
     procedure cleanup_regvars(asml: TAAsmoutput);
     var
     var
       i: longint;
       i: longint;
-      reg32 : tregister;
+      reg : tregister;
     begin
     begin
       { can happen when inlining assembler procedures (JM) }
       { can happen when inlining assembler procedures (JM) }
       if not assigned(aktprocdef.regvarinfo) then
       if not assigned(aktprocdef.regvarinfo) then
@@ -458,9 +450,9 @@ implementation
              begin
              begin
                if assigned(regvars[i]) then
                if assigned(regvars[i]) then
                 begin
                 begin
-                  reg32:=changeregsize(regvars[i].reg,S_L);
-                  if (rg.regvar_loaded[reg32]) then
-                   asml.concat(Tairegalloc.dealloc(reg32));
+                  reg:=rg.makeregsize(regvars[i].reg,OS_INT);
+                  if (rg.regvar_loaded[reg]) then
+                   asml.concat(Tairegalloc.dealloc(reg));
                 end;
                 end;
              end;
              end;
           end;
           end;
@@ -470,7 +462,10 @@ end.
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.28  2002-04-19 15:46:03  peter
+  Revision 1.29  2002-04-21 15:23:34  carl
+  + changeregsize -> makeregsize
+
+  Revision 1.28  2002/04/19 15:46:03  peter
     * mangledname rewrite, tprocdef.mangledname is now created dynamicly
     * mangledname rewrite, tprocdef.mangledname is now created dynamicly
       in most cases and not written to the ppu
       in most cases and not written to the ppu
     * add mangeledname_prefix() routine to generate the prefix of
     * add mangeledname_prefix() routine to generate the prefix of