From 420309ec59166c347f56164294d4d524cfa2a519 Mon Sep 17 00:00:00 2001 From: florian <florian@freepascal.org> Date: Sat, 16 May 2015 21:49:42 +0000 Subject: [PATCH] * reduce dependencies of the procinfo unit git-svn-id: trunk@30871 - --- compiler/procinfo.pas | 23 ++++------------------- compiler/psub.pas | 10 ++++++++++ 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/compiler/procinfo.pas b/compiler/procinfo.pas index 7682396336..e3b0f64c61 100644 --- a/compiler/procinfo.pas +++ b/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 } diff --git a/compiler/psub.pas b/compiler/psub.pas index 2efa50a706..97041e4f6f 100644 --- a/compiler/psub.pas +++ b/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);