浏览代码

* reduce dependencies of the procinfo unit

git-svn-id: trunk@30871 -
florian 10 年之前
父节点
当前提交
420309ec59
共有 2 个文件被更改,包括 14 次插入19 次删除
  1. 4 19
      compiler/procinfo.pas
  2. 10 0
      compiler/psub.pas

+ 4 - 19
compiler/procinfo.pas

@@ -142,7 +142,7 @@ unit procinfo;
 
           procedure allocate_push_parasize(size:longint);
 
-          function calc_stackframe_size:longint;virtual;
+          function calc_stackframe_size:longint;virtual;abstract;
 
           { Set the address of the first temp, can be used to allocate
             space for pushing parameters }
@@ -190,12 +190,8 @@ unit procinfo;
 
 implementation
 
-     uses
-        cutils,systems,
-        tgobj,cgobj,
-        paramgr
-        ;
-
+    uses
+      cutils,systems;
 
 {****************************************************************************
                                  TProcInfo
@@ -277,7 +273,7 @@ implementation
     function tprocinfo.get_normal_proc: tprocinfo;
       begin
         result:=self;
-        while assigned(result.parent)and(result.procdef.parast.symtablelevel>normal_function_level) do
+        while assigned(result.parent) and (result.procdef.parast.symtablelevel>normal_function_level) do
           result:=result.parent;
       end;
 
@@ -301,18 +297,10 @@ implementation
           maxpushedparasize:=size;
       end;
 
-
-    function tprocinfo.calc_stackframe_size:longint;
-      begin
-        result:=Align(tg.direction*tg.lasttemp,current_settings.alignment.localalignmin);
-      end;
-
-
     procedure tprocinfo.set_first_temp_offset;
       begin
       end;
 
-
     procedure tprocinfo.generate_parameter_info;
       begin
         { generate callee paraloc register info, it initialises the size that
@@ -321,20 +309,17 @@ implementation
         para_stack_size:=procdef.calleeargareasize;
       end;
 
-
     procedure tprocinfo.allocate_got_register(list: TAsmList);
       begin
         { most os/cpu combo's don't use this yet, so not yet abstract }
       end;
 
-
     procedure tprocinfo.init_framepointer;
       begin
         { most targets use a constant, but some have a typed constant that must
           be initialized }
       end;
 
-
     procedure tprocinfo.postprocess_code;
       begin
         { no action by default }

+ 10 - 0
compiler/psub.pas

@@ -54,7 +54,11 @@ interface
         final_asmnode : tasmnode;
         final_used : boolean;
         dfabuilder : TDFABuilder;
+
         destructor  destroy;override;
+
+        function calc_stackframe_size : longint;override;
+
         procedure printproc(pass:string);
         procedure generate_code;
         procedure generate_code_tree;
@@ -678,6 +682,12 @@ implementation
        end;
 
 
+    function tcgprocinfo.calc_stackframe_size:longint;
+      begin
+        result:=Align(tg.direction*tg.lasttemp,current_settings.alignment.localalignmin);
+      end;
+
+
     procedure tcgprocinfo.printproc(pass:string);
       begin
         assign(printnodefile,treelogfilename);