mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-14 05:40:28 +02:00
* renamed getintparaloc to getcgtempparaloc
o it can be used for more than integer parameters git-svn-id: trunk@43781 -
This commit is contained in:
parent
9853ed53e8
commit
1e3f72403e
@ -1800,9 +1800,9 @@ implementation
|
||||
paraloc1.init;
|
||||
paraloc2.init;
|
||||
paraloc3.init;
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getintparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getintparaloc(list,pd,3,paraloc3);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getcgtempparaloc(list,pd,3,paraloc3);
|
||||
a_load_const_cgpara(list,OS_SINT,len,paraloc3);
|
||||
a_loadaddr_ref_cgpara(list,dest,paraloc2);
|
||||
a_loadaddr_ref_cgpara(list,source,paraloc1);
|
||||
|
@ -2611,9 +2611,9 @@ unit cgcpu;
|
||||
paraloc1.init;
|
||||
paraloc2.init;
|
||||
paraloc3.init;
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getintparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getintparaloc(list,pd,3,paraloc3);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getcgtempparaloc(list,pd,3,paraloc3);
|
||||
a_load_const_cgpara(list,OS_SINT,len,paraloc3);
|
||||
a_loadaddr_ref_cgpara(list,dest,paraloc2);
|
||||
a_loadaddr_ref_cgpara(list,source,paraloc1);
|
||||
|
@ -40,7 +40,7 @@ unit cpupara;
|
||||
function get_saved_registers_int(calloption : tproccalloption):tcpuregisterarray;override;
|
||||
function push_addr_param(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean;override;
|
||||
function ret_in_param(def:tdef;pd:tabstractprocdef):boolean;override;
|
||||
procedure getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
|
||||
procedure getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
|
||||
function create_paraloc_info(p : tabstractprocdef; side: tcallercallee):longint;override;
|
||||
function create_varargs_paraloc_info(p : tabstractprocdef; side: tcallercallee; varargspara:tvarargsparalist):longint;override;
|
||||
function get_funcretloc(p : tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;override;
|
||||
@ -94,7 +94,7 @@ unit cpupara;
|
||||
end;
|
||||
|
||||
|
||||
procedure tcpuparamanager.getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
|
||||
procedure tcpuparamanager.getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
|
||||
var
|
||||
paraloc : pcgparalocation;
|
||||
psym : tparavarsym;
|
||||
|
@ -2101,8 +2101,8 @@ unit cgcpu;
|
||||
pd:=search_system_proc(name);
|
||||
paraloc1.init;
|
||||
paraloc2.init;
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getintparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,paraloc2);
|
||||
a_load_reg_cgpara(list,OS_8,src1,paraloc2);
|
||||
a_load_reg_cgpara(list,OS_8,src2,paraloc1);
|
||||
paramanager.freecgpara(list,paraloc2);
|
||||
@ -2198,8 +2198,8 @@ unit cgcpu;
|
||||
pd:=search_system_proc(name);
|
||||
paraloc1.init;
|
||||
paraloc2.init;
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getintparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,paraloc2);
|
||||
a_load_reg_cgpara(list,OS_16,src1,paraloc2);
|
||||
a_load_reg_cgpara(list,OS_16,src2,paraloc1);
|
||||
paramanager.freecgpara(list,paraloc2);
|
||||
@ -2445,9 +2445,9 @@ unit cgcpu;
|
||||
paraloc1.init;
|
||||
paraloc2.init;
|
||||
paraloc3.init;
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getintparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getintparaloc(list,pd,3,paraloc3);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getcgtempparaloc(list,pd,3,paraloc3);
|
||||
a_load_const_cgpara(list,OS_SINT,len,paraloc3);
|
||||
a_loadaddr_ref_cgpara(list,dest,paraloc2);
|
||||
a_loadaddr_ref_cgpara(list,source,paraloc1);
|
||||
|
@ -162,9 +162,9 @@ unit cgexcept;
|
||||
|
||||
{ fpc_pushexceptaddr(exceptionframetype, setjmp_buffer, exception_address_chain_entry) }
|
||||
pd:=search_system_proc('fpc_pushexceptaddr');
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getintparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getintparaloc(list,pd,3,paraloc3);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getcgtempparaloc(list,pd,3,paraloc3);
|
||||
if pd.is_pushleftright then
|
||||
begin
|
||||
{ type of exceptionframe }
|
||||
@ -197,7 +197,7 @@ unit cgexcept;
|
||||
|
||||
{ fpc_setjmp(result_of_pushexceptaddr_call) }
|
||||
pd:=search_system_proc('fpc_setjmp');
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
|
||||
hlcg.a_load_reg_cgpara(list,pushexceptres.def,tmpresloc.register,paraloc1);
|
||||
paramanager.freecgpara(list,paraloc1);
|
||||
@ -302,7 +302,7 @@ unit cgexcept;
|
||||
reference_reset_symbol(href2, current_asmdata.RefAsmSymbol(excepttype.vmt_mangledname, AT_DATA, indirect), 0, sizeof(pint), []);
|
||||
if otherunit then
|
||||
current_module.add_extern_asmsym(excepttype.vmt_mangledname, AB_EXTERNAL, AT_DATA);
|
||||
paramanager.getintparaloc(list, pd, 1, paraloc1);
|
||||
paramanager.getcgtempparaloc(list, pd, 1, paraloc1);
|
||||
hlcg.a_loadaddr_ref_cgpara(list, excepttype.vmt_def, href2, paraloc1);
|
||||
paramanager.freecgpara(list, paraloc1);
|
||||
fpc_catches_res:=hlcg.g_call_system_proc(list, pd, [@paraloc1], nil);
|
||||
|
@ -3296,7 +3296,7 @@ implementation
|
||||
current_asmdata.getjumplabel(oklabel);
|
||||
a_cmp_const_reg_label(list,selftype,OC_NE,0,reg,oklabel);
|
||||
cgpara1.init;
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
a_load_const_cgpara(list,s32inttype,aint(210),cgpara1);
|
||||
paramanager.freecgpara(list,cgpara1);
|
||||
g_call_system_proc(list,pd,[@cgpara1],nil).resetiftemp;
|
||||
@ -3329,9 +3329,9 @@ implementation
|
||||
cgpara1.init;
|
||||
cgpara2.init;
|
||||
cgpara3.init;
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getintparaloc(list,pd,2,cgpara2);
|
||||
paramanager.getintparaloc(list,pd,3,cgpara3);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,cgpara2);
|
||||
paramanager.getcgtempparaloc(list,pd,3,cgpara3);
|
||||
if pd.is_pushleftright then
|
||||
begin
|
||||
a_loadaddr_ref_cgpara(list,strdef,dest,cgpara1);
|
||||
@ -3361,8 +3361,8 @@ implementation
|
||||
pd:=search_system_proc('fpc_variant_copy_overwrite');
|
||||
cgpara1.init;
|
||||
cgpara2.init;
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getintparaloc(list,pd,2,cgpara2);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,cgpara2);
|
||||
if pd.is_pushleftright then
|
||||
begin
|
||||
a_loadaddr_ref_cgpara(list,vardef,source,cgpara1);
|
||||
@ -3405,7 +3405,7 @@ implementation
|
||||
if incrfunc<>'' then
|
||||
begin
|
||||
pd:=search_system_proc(incrfunc);
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
{ widestrings aren't ref. counted on all platforms so we need the address
|
||||
to create a real copy }
|
||||
if is_widestring(t) then
|
||||
@ -3419,8 +3419,8 @@ implementation
|
||||
else
|
||||
begin
|
||||
pd:=search_system_proc('fpc_addref');
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getintparaloc(list,pd,2,cgpara2);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,cgpara2);
|
||||
if is_open_array(t) then
|
||||
InternalError(201103054);
|
||||
reference_reset_symbol(href,RTTIWriter.get_rtti_label(t,initrtti,def_needs_indirect(t)),0,sizeof(pint),[]);
|
||||
@ -3459,7 +3459,7 @@ implementation
|
||||
else if t.typ=variantdef then
|
||||
begin
|
||||
pd:=search_system_proc('fpc_variant_init');
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
a_loadaddr_ref_cgpara(list,t,ref,cgpara1);
|
||||
paramanager.freecgpara(list,cgpara1);
|
||||
g_call_system_proc(list,pd,[@cgpara1],nil).resetiftemp;
|
||||
@ -3469,8 +3469,8 @@ implementation
|
||||
if is_open_array(t) then
|
||||
InternalError(201103052);
|
||||
pd:=search_system_proc('fpc_initialize');
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getintparaloc(list,pd,2,cgpara2);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,cgpara2);
|
||||
reference_reset_symbol(href,RTTIWriter.get_rtti_label(t,initrtti,def_needs_indirect(t)),0,sizeof(pint),[]);
|
||||
if pd.is_pushleftright then
|
||||
begin
|
||||
@ -3519,8 +3519,8 @@ implementation
|
||||
pd:=search_system_proc('fpc_dynarray_clear')
|
||||
else
|
||||
pd:=search_system_proc('fpc_finalize');
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getintparaloc(list,pd,2,cgpara2);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,cgpara2);
|
||||
reference_reset_symbol(href,RTTIWriter.get_rtti_label(t,initrtti,def_needs_indirect(t)),0,sizeof(pint),[]);
|
||||
if pd.is_pushleftright then
|
||||
begin
|
||||
@ -3541,7 +3541,7 @@ implementation
|
||||
end;
|
||||
pd:=search_system_proc(decrfunc);
|
||||
cgpara1.init;
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
a_loadaddr_ref_cgpara(list,t,ref,cgpara1);
|
||||
paramanager.freecgpara(list,cgpara1);
|
||||
g_call_system_proc(list,pd,[@cgpara1],nil).resetiftemp;
|
||||
@ -3559,9 +3559,9 @@ implementation
|
||||
cgpara2.init;
|
||||
cgpara3.init;
|
||||
pd:=search_system_proc(name);
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getintparaloc(list,pd,2,cgpara2);
|
||||
paramanager.getintparaloc(list,pd,3,cgpara3);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,cgpara2);
|
||||
paramanager.getcgtempparaloc(list,pd,3,cgpara3);
|
||||
|
||||
reference_reset_symbol(href,RTTIWriter.get_rtti_label(t,initrtti,def_needs_indirect(t)),0,sizeof(pint),[]);
|
||||
{ if calling convention is left to right, push parameters 1 and 2 }
|
||||
@ -3857,7 +3857,7 @@ implementation
|
||||
{ do getmem call }
|
||||
pd:=search_system_proc('fpc_getmem');
|
||||
cgpara1.init;
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
a_load_reg_cgpara(list,sinttype,sizereg,cgpara1);
|
||||
paramanager.freecgpara(list,cgpara1);
|
||||
getmemres:=g_call_system_proc(list,pd,[@cgpara1],ptrarrdef);
|
||||
@ -3872,9 +3872,9 @@ implementation
|
||||
cgpara1.init;
|
||||
cgpara2.init;
|
||||
cgpara3.init;
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getintparaloc(list,pd,2,cgpara2);
|
||||
paramanager.getintparaloc(list,pd,3,cgpara3);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,cgpara2);
|
||||
paramanager.getcgtempparaloc(list,pd,3,cgpara3);
|
||||
if pd.is_pushleftright then
|
||||
begin
|
||||
{ load source }
|
||||
@ -3911,7 +3911,7 @@ implementation
|
||||
{ do freemem call }
|
||||
pd:=search_system_proc('fpc_freemem');
|
||||
cgpara1.init;
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
{ load source }
|
||||
a_load_loc_cgpara(list,cpointerdef.getreusable(arrdef),l,cgpara1);
|
||||
paramanager.freecgpara(list,cgpara1);
|
||||
@ -5367,7 +5367,7 @@ implementation
|
||||
begin
|
||||
pd:=search_system_proc('fpc_stackcheck');
|
||||
paraloc1.init;
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
hlcg.a_load_const_cgpara(list,paraloc1.def,current_procinfo.calc_stackframe_size,paraloc1);
|
||||
paramanager.freecgpara(list,paraloc1);
|
||||
paraloc1.done;
|
||||
@ -5382,7 +5382,7 @@ implementation
|
||||
paraloc1.init;
|
||||
{ The parameter to fpc_stackcheck is loaded seperately via
|
||||
gen_stack_check_size_para() }
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
paramanager.freecgpara(list,paraloc1);
|
||||
{ Call the helper }
|
||||
g_call_system_proc(list,pd,[@paraloc1],nil).resetiftemp;
|
||||
|
@ -53,7 +53,7 @@ unit cpupara;
|
||||
other memory models, this mechanism has to be extended somehow to
|
||||
support 32-bit addresses on a 16-bit CPU.
|
||||
}
|
||||
procedure getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
|
||||
procedure getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
|
||||
function create_paraloc_info(p : tabstractprocdef; side: tcallercallee):longint;override;
|
||||
function create_varargs_paraloc_info(p : tabstractprocdef; side: tcallercallee; varargspara:tvarargsparalist):longint;override;
|
||||
procedure createtempparaloc(list: TAsmList;calloption : tproccalloption;parasym : tparavarsym;can_use_final_stack_loc : boolean;var cgpara:TCGPara);override;
|
||||
@ -256,7 +256,7 @@ unit cpupara;
|
||||
end;
|
||||
|
||||
|
||||
procedure tcpuparamanager.getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
|
||||
procedure tcpuparamanager.getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
|
||||
var
|
||||
paraloc : pcgparalocation;
|
||||
psym: tparavarsym;
|
||||
|
@ -136,7 +136,7 @@ implementation
|
||||
if pvd.typ<>procvardef then
|
||||
internalerror(2012120901);
|
||||
paraloc1.init;
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,tprocvardef(pvd),1,paraloc1);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,tprocvardef(pvd),1,paraloc1);
|
||||
hregister:=hlcg.getaddressregister(current_asmdata.CurrAsmList,pvd);
|
||||
segreg:=cg.getintregister(current_asmdata.CurrAsmList,OS_16);
|
||||
reference_reset_symbol(segref,current_asmdata.RefAsmSymbol('FPC_THREADVAR_RELOCATE',AT_DATA),0,pvd.alignment,[]);
|
||||
|
@ -168,7 +168,7 @@ implementation
|
||||
internalerror(2012010601);
|
||||
pd:=tprocdef(tprocsym(sym).ProcdefList[0]);
|
||||
paraloc1.init;
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
hlcg.a_loadaddr_ref_cgpara(current_asmdata.CurrAsmList,resultdef,location.reference,paraloc1);
|
||||
paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
|
||||
paraloc1.done;
|
||||
|
@ -44,7 +44,7 @@ interface
|
||||
{Returns a structure giving the information on the storage of the parameter
|
||||
(which must be an integer parameter)
|
||||
@param(nr Parameter number of routine, starting from 1)}
|
||||
procedure getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
|
||||
procedure getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
|
||||
function create_paraloc_info(p : TAbstractProcDef; side: tcallercallee):longint;override;
|
||||
function create_varargs_paraloc_info(p : tabstractprocdef; side: tcallercallee; varargspara:tvarargsparalist):longint;override;
|
||||
function get_funcretloc(p : tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;override;
|
||||
@ -65,7 +65,7 @@ implementation
|
||||
hlcgobj;
|
||||
|
||||
|
||||
procedure tcpuparamanager.GetIntParaLoc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
|
||||
procedure tcpuparamanager.getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
|
||||
begin
|
||||
{ not yet implemented/used }
|
||||
internalerror(2010121001);
|
||||
|
@ -1175,19 +1175,19 @@ implementation
|
||||
sizepara.init;
|
||||
alignpara.init;
|
||||
volatilepara.init;
|
||||
paramanager.getintparaloc(list,pd,1,destpara);
|
||||
paramanager.getintparaloc(list,pd,2,sourcepara);
|
||||
paramanager.getintparaloc(list,pd,3,sizepara);
|
||||
paramanager.getcgtempparaloc(list,pd,1,destpara);
|
||||
paramanager.getcgtempparaloc(list,pd,2,sourcepara);
|
||||
paramanager.getcgtempparaloc(list,pd,3,sizepara);
|
||||
if indivalign then
|
||||
begin
|
||||
paramanager.getintparaloc(list,pd,4,volatilepara);
|
||||
paramanager.getcgtempparaloc(list,pd,4,volatilepara);
|
||||
destpara.Alignment:=-dest.alignment;
|
||||
sourcepara.Alignment:=-source.alignment;
|
||||
end
|
||||
else
|
||||
begin
|
||||
paramanager.getintparaloc(list,pd,4,alignpara);
|
||||
paramanager.getintparaloc(list,pd,5,volatilepara);
|
||||
paramanager.getcgtempparaloc(list,pd,4,alignpara);
|
||||
paramanager.getcgtempparaloc(list,pd,5,volatilepara);
|
||||
maxalign:=newalignment(max(source.alignment,dest.alignment),min(source.alignment,dest.alignment));
|
||||
a_load_const_cgpara(list,u32inttype,maxalign,alignpara);
|
||||
end;
|
||||
|
@ -45,7 +45,7 @@ unit llvmpara;
|
||||
architecture-specific code, or whether we will have to integrate parts
|
||||
into the various tcpuparamanager classes }
|
||||
tllvmparamanager = class(tcpuparamanager)
|
||||
procedure getintparaloc(list: TAsmList; pd: tabstractprocdef; nr: longint; var cgpara: tcgpara); override;
|
||||
procedure getcgtempparaloc(list: TAsmList; pd: tabstractprocdef; nr: longint; var cgpara: tcgpara); override;
|
||||
function param_use_paraloc(const cgpara: tcgpara): boolean; override;
|
||||
procedure createtempparaloc(list: TAsmList; calloption: tproccalloption; parasym: tparavarsym; can_use_final_stack_loc: boolean; var cgpara: TCGPara); override;
|
||||
function create_paraloc_info(p: tabstractprocdef; side: tcallercallee): longint; override;
|
||||
@ -71,7 +71,7 @@ unit llvmpara;
|
||||
|
||||
{ tllvmparamanager }
|
||||
|
||||
procedure tllvmparamanager.getintparaloc(list: TAsmList; pd: tabstractprocdef; nr: longint; var cgpara: tcgpara);
|
||||
procedure tllvmparamanager.getcgtempparaloc(list: TAsmList; pd: tabstractprocdef; nr: longint; var cgpara: tcgpara);
|
||||
begin
|
||||
if (nr<1) or (nr>pd.paras.count) then
|
||||
InternalError(2015040401);
|
||||
|
@ -321,7 +321,7 @@ implementation
|
||||
landingpadtypeiddef:=tfieldvarsym(trecorddef(landingpadstructdef).symtable.symlist[1]).vardef;
|
||||
exceptiontypeidreg:=hlcg.getaddressregister(list,landingpadtypeiddef);
|
||||
pd:=search_system_proc('llvm_eh_typeid_for');
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
reference_reset_symbol(rttiref,rttisym,0,rttidef.alignment,[]);
|
||||
rttiref.refaddr:=addr_full;
|
||||
hlcg.a_load_ref_cgpara(list,cpointerdef.getreusable(rttidef),rttiref,paraloc1);
|
||||
@ -341,7 +341,7 @@ implementation
|
||||
list.concat(taillvm.extract(la_extractvalue,wrappedexception,landingpadstructdef,landingpadres,0));
|
||||
|
||||
pd:=search_system_proc('fpc_psabi_begin_catch');
|
||||
paramanager.getintparaloc(list, pd, 1, paraloc1);
|
||||
paramanager.getcgtempparaloc(list, pd, 1, paraloc1);
|
||||
hlcg.a_load_reg_cgpara(list,voidpointertype,wrappedexception,paraloc1);
|
||||
begincatchres:=hlcg.g_call_system_proc(list,pd,[@paraloc1],nil);
|
||||
location_reset(exceptloc, LOC_REGISTER, def_cgsize(begincatchres.def));
|
||||
|
@ -159,8 +159,8 @@ implementation
|
||||
sizepara.init;
|
||||
ptrpara.init;
|
||||
pd:=search_system_proc(procname);
|
||||
paramanager.getintparaloc(list,pd,1,sizepara);
|
||||
paramanager.getintparaloc(list,pd,2,ptrpara);
|
||||
paramanager.getcgtempparaloc(list,pd,1,sizepara);
|
||||
paramanager.getcgtempparaloc(list,pd,2,ptrpara);
|
||||
hlcg.a_load_const_cgpara(list,sizepara.def,temp^.size,sizepara);
|
||||
hlcg.a_loadaddr_ref_cgpara(list,temp^.def,ref,ptrpara);
|
||||
hlcg.g_call_system_proc(list,pd,[@sizepara,@ptrpara],nil).resetiftemp;
|
||||
|
@ -576,8 +576,8 @@ unit cgcpu;
|
||||
pd:=search_system_proc(name);
|
||||
paraloc1.init;
|
||||
paraloc2.init;
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getintparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,paraloc2);
|
||||
a_load_const_cgpara(list,size,a,paraloc2);
|
||||
a_load_reg_cgpara(list,OS_32,reg,paraloc1);
|
||||
paramanager.freecgpara(list,paraloc2);
|
||||
@ -600,8 +600,8 @@ unit cgcpu;
|
||||
pd:=search_system_proc(name);
|
||||
paraloc1.init;
|
||||
paraloc2.init;
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getintparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,paraloc2);
|
||||
a_load_reg_cgpara(list,OS_32,reg1,paraloc2);
|
||||
a_load_reg_cgpara(list,OS_32,reg2,paraloc1);
|
||||
paramanager.freecgpara(list,paraloc2);
|
||||
|
@ -1489,9 +1489,9 @@ begin
|
||||
paraloc1.init;
|
||||
paraloc2.init;
|
||||
paraloc3.init;
|
||||
paramanager.getintparaloc(list, pd, 1, paraloc1);
|
||||
paramanager.getintparaloc(list, pd, 2, paraloc2);
|
||||
paramanager.getintparaloc(list, pd, 3, paraloc3);
|
||||
paramanager.getcgtempparaloc(list, pd, 1, paraloc1);
|
||||
paramanager.getcgtempparaloc(list, pd, 2, paraloc2);
|
||||
paramanager.getcgtempparaloc(list, pd, 3, paraloc3);
|
||||
a_load_const_cgpara(list, OS_SINT, len, paraloc3);
|
||||
a_loadaddr_ref_cgpara(list, dest, paraloc2);
|
||||
a_loadaddr_ref_cgpara(list, Source, paraloc1);
|
||||
|
@ -1267,7 +1267,7 @@ implementation
|
||||
pd:=search_system_proc('fpc_safecallcheck');
|
||||
cgpara.init;
|
||||
{ fpc_safecallcheck returns its parameter value (= function result of function we just called) }
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,cgpara);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,pd,1,cgpara);
|
||||
location_reset(tmploc,LOC_REGISTER,def_cgsize(retloc.Def));
|
||||
tmploc.register:=hlcg.getregisterfordef(current_asmdata.CurrAsmList,retloc.Def);
|
||||
hlcg.gen_load_cgpara_loc(current_asmdata.CurrAsmList,retloc.Def,retloc,tmploc,true);
|
||||
|
@ -888,7 +888,7 @@ implementation
|
||||
nil otherwise. }
|
||||
pd:=search_system_proc('fpc_safecallhandler');
|
||||
cgpara.init;
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,cgpara);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,pd,1,cgpara);
|
||||
if is_class(current_procinfo.procdef.struct) then
|
||||
begin
|
||||
selfsym:=tparavarsym(current_procinfo.procdef.parast.Find('self'));
|
||||
|
@ -336,7 +336,7 @@ implementation
|
||||
reference_reset_base(tvref,hreg_tv_rec,0,ctempposinvalid,tvref.alignment,tvref.volatility)
|
||||
end;
|
||||
paraloc1.init;
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,tprocvardef(pvd),1,paraloc1);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,tprocvardef(pvd),1,paraloc1);
|
||||
hregister:=hlcg.getaddressregister(current_asmdata.CurrAsmList,pvd);
|
||||
reference_reset_symbol(href,current_asmdata.RefAsmSymbol('FPC_THREADVAR_RELOCATE',AT_DATA,indirect),0,pvd.alignment,[]);
|
||||
if not issystemunit then
|
||||
|
@ -455,7 +455,7 @@ implementation
|
||||
cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_INT,OC_NE,0,hdenom,hl);
|
||||
paraloc1.init;
|
||||
pd:=search_system_proc('fpc_handleerror');
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
cg.a_load_const_cgpara(current_asmdata.CurrAsmList,OS_S32,aint(200),paraloc1);
|
||||
paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_HANDLEERROR',false);
|
||||
|
@ -306,7 +306,7 @@ implementation
|
||||
internalerror(2012010601);
|
||||
pd:=tprocdef(tprocsym(sym).ProcdefList[0]);
|
||||
paraloc1.init;
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
hlcg.a_loadaddr_ref_cgpara(current_asmdata.CurrAsmList,left.resultdef,location.reference,paraloc1);
|
||||
paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
|
||||
paraloc1.done;
|
||||
@ -399,7 +399,7 @@ implementation
|
||||
(sym.typ<>procsym) then
|
||||
internalerror(2012010602);
|
||||
pd:=tprocdef(tprocsym(sym).ProcdefList[0]);
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
hlcg.a_loadaddr_ref_cgpara(current_asmdata.CurrAsmList,left.resultdef,location.reference,paraloc1);
|
||||
paramanager.freecgpara(current_asmdata.CurrAsmList,paraloc1);
|
||||
hlcg.allocallcpuregisters(current_asmdata.CurrAsmList);
|
||||
@ -768,8 +768,8 @@ implementation
|
||||
if is_dynamic_array(left.resultdef) then
|
||||
begin
|
||||
pd:=search_system_proc('fpc_dynarray_rangecheck');
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,2,paraloc2);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,pd,2,paraloc2);
|
||||
if pd.is_pushleftright then
|
||||
begin
|
||||
hlcg.a_load_loc_cgpara(current_asmdata.CurrAsmList,left.resultdef,left.location,paraloc1);
|
||||
@ -808,8 +808,8 @@ implementation
|
||||
begin
|
||||
helpername:='fpc_'+tstringdef(left.resultdef).stringtypname+'_rangecheck';
|
||||
pd:=search_system_proc(helpername);
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,2,paraloc2);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,pd,2,paraloc2);
|
||||
if pd.is_pushleftright then
|
||||
begin
|
||||
hlcg.a_load_loc_cgpara(current_asmdata.CurrAsmList,left.resultdef,left.location,paraloc1);
|
||||
|
@ -94,7 +94,9 @@ unit paramgr;
|
||||
function get_saved_registers_fpu(calloption : tproccalloption):tcpuregisterarray;virtual;
|
||||
function get_saved_registers_mm(calloption : tproccalloption):tcpuregisterarray;virtual;
|
||||
|
||||
procedure getintparaloc(list: TAsmList; pd: tabstractprocdef; nr : longint; var cgpara: tcgpara);virtual;
|
||||
{ \brief Get a parameter location for calling a procdef directly instead of via a call node }
|
||||
{ \returns parameter location in \c cgpara for parameter \c nr of \c pd }
|
||||
procedure getcgtempparaloc(list: TAsmList; pd: tabstractprocdef; nr : longint; var cgpara: tcgpara);virtual;
|
||||
|
||||
{# allocate an individual pcgparalocation that's part of a tcgpara
|
||||
|
||||
@ -746,7 +748,7 @@ implementation
|
||||
end;
|
||||
|
||||
|
||||
procedure tparamanager.getintparaloc(list: TAsmList; pd: tabstractprocdef; nr : longint; var cgpara: tcgpara);
|
||||
procedure tparamanager.getcgtempparaloc(list: TAsmList; pd: tabstractprocdef; nr : longint; var cgpara: tcgpara);
|
||||
begin
|
||||
if (nr<1) or (nr>pd.paras.count) then
|
||||
InternalError(2013060101);
|
||||
|
@ -38,7 +38,7 @@ unit cpupara;
|
||||
function get_saved_registers_int(calloption : tproccalloption):tcpuregisterarray;override;
|
||||
function push_addr_param(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean;override;
|
||||
|
||||
procedure getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
|
||||
procedure getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
|
||||
function create_paraloc_info(p : tabstractprocdef; side: tcallercallee):longint;override;
|
||||
function create_varargs_paraloc_info(p : tabstractprocdef; side: tcallercallee; varargspara:tvarargsparalist):longint;override;
|
||||
function get_funcretloc(p : tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;override;
|
||||
@ -91,7 +91,7 @@ unit cpupara;
|
||||
end;
|
||||
|
||||
|
||||
procedure tcpuparamanager.getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
|
||||
procedure tcpuparamanager.getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
|
||||
var
|
||||
paraloc : pcgparalocation;
|
||||
psym : tparavarsym;
|
||||
|
@ -43,7 +43,7 @@ type
|
||||
tproccalloption): boolean; override;
|
||||
function ret_in_param(def: tdef; pd: tabstractprocdef): boolean; override;
|
||||
|
||||
procedure getintparaloc(list: TAsmList; pd : tabstractprocdef; nr: longint; var cgpara: tcgpara); override;
|
||||
procedure getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr: longint; var cgpara: tcgpara); override;
|
||||
function create_paraloc_info(p: tabstractprocdef; side: tcallercallee): longint; override;
|
||||
function create_varargs_paraloc_info(p: tabstractprocdef; side: tcallercallee; varargspara: tvarargsparalist): longint; override;
|
||||
function get_funcretloc(p : tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;override;
|
||||
@ -92,7 +92,7 @@ begin
|
||||
result:=saved_regs;
|
||||
end;
|
||||
|
||||
procedure tcpuparamanager.getintparaloc(list: TAsmList; pd : tabstractprocdef; nr: longint; var cgpara: tcgpara);
|
||||
procedure tcpuparamanager.getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr: longint; var cgpara: tcgpara);
|
||||
var
|
||||
paraloc: pcgparalocation;
|
||||
psym: tparavarsym;
|
||||
|
@ -712,7 +712,7 @@ unit cgppc;
|
||||
begin
|
||||
pd:=search_system_proc('mcount');
|
||||
paraloc1.init;
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
a_load_reg_cgpara(list,OS_ADDR,NR_R0,paraloc1);
|
||||
paramanager.freecgpara(list,paraloc1);
|
||||
paraloc1.done;
|
||||
|
@ -642,7 +642,7 @@ implementation
|
||||
|
||||
pd:=search_system_proc('_unwind_resume');
|
||||
cgpara1.init;
|
||||
paramanager.getintparaloc(list,pd,1,cgpara1);
|
||||
paramanager.getcgtempparaloc(list,pd,1,cgpara1);
|
||||
hlcg.a_load_reg_cgpara(list,voidpointertype,t.unwind_info,cgpara1);
|
||||
paramanager.freecgpara(list,cgpara1);
|
||||
hlcg.g_call_system_proc(list,'_unwind_resume',[@cgpara1],nil).resetiftemp;
|
||||
@ -741,7 +741,7 @@ implementation
|
||||
(current_procinfo as tpsabiehprocinfo).CurrentAction.AddAction(tobjectdef(-1));
|
||||
|
||||
pd:=search_system_proc('fpc_psabi_begin_catch');
|
||||
paramanager.getintparaloc(list, pd, 1, paraloc1);
|
||||
paramanager.getcgtempparaloc(list, pd, 1, paraloc1);
|
||||
hlcg.a_load_reg_cgpara(list,voidpointertype,wrappedexception,paraloc1);
|
||||
begincatchres:=hlcg.g_call_system_proc(list,pd,[@paraloc1],nil);
|
||||
location_reset(exceptloc, LOC_REGISTER, def_cgsize(begincatchres.def));
|
||||
|
@ -315,9 +315,9 @@ unit cgcpu;
|
||||
paraloc1.init;
|
||||
paraloc2.init;
|
||||
paraloc3.init;
|
||||
paramanager.getintparaloc(list, pd, 1, paraloc1);
|
||||
paramanager.getintparaloc(list, pd, 2, paraloc2);
|
||||
paramanager.getintparaloc(list, pd, 3, paraloc3);
|
||||
paramanager.getcgtempparaloc(list, pd, 1, paraloc1);
|
||||
paramanager.getcgtempparaloc(list, pd, 2, paraloc2);
|
||||
paramanager.getcgtempparaloc(list, pd, 3, paraloc3);
|
||||
a_load_const_cgpara(list, OS_SINT, len, paraloc3);
|
||||
a_loadaddr_ref_cgpara(list, dest, paraloc2);
|
||||
a_loadaddr_ref_cgpara(list, Source, paraloc1);
|
||||
|
@ -37,7 +37,7 @@ unit cpupara;
|
||||
function get_volatile_registers_fpu(calloption : tproccalloption):tcpuregisterset;override;
|
||||
function push_addr_param(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean;override;
|
||||
|
||||
procedure getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
|
||||
procedure getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override;
|
||||
function create_paraloc_info(p : tabstractprocdef; side: tcallercallee):longint;override;
|
||||
function create_varargs_paraloc_info(p : tabstractprocdef; side: tcallercallee; varargspara:tvarargsparalist):longint;override;
|
||||
function get_funcretloc(p : tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;override;
|
||||
@ -68,7 +68,7 @@ unit cpupara;
|
||||
end;
|
||||
|
||||
|
||||
procedure tcpuparamanager.getintparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
|
||||
procedure tcpuparamanager.getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
|
||||
var
|
||||
paraloc : pcgparalocation;
|
||||
psym : tparavarsym;
|
||||
|
@ -524,9 +524,9 @@ implementation
|
||||
paraloc1.init;
|
||||
paraloc2.init;
|
||||
paraloc3.init;
|
||||
paramanager.getintparaloc(list, pd, 1, paraloc1);
|
||||
paramanager.getintparaloc(list, pd, 2, paraloc2);
|
||||
paramanager.getintparaloc(list, pd, 3, paraloc3);
|
||||
paramanager.getcgtempparaloc(list, pd, 1, paraloc1);
|
||||
paramanager.getcgtempparaloc(list, pd, 2, paraloc2);
|
||||
paramanager.getcgtempparaloc(list, pd, 3, paraloc3);
|
||||
a_load_const_cgpara(list, OS_SINT, len, paraloc3);
|
||||
a_loadaddr_ref_cgpara(list, dest, paraloc2);
|
||||
a_loadaddr_ref_cgpara(list, Source, paraloc1);
|
||||
|
@ -38,7 +38,7 @@ unit cpupara;
|
||||
function push_addr_param(varspez: tvarspez; def: tdef; calloption: tproccalloption): boolean; override;
|
||||
function ret_in_param(def: tdef; pd: tabstractprocdef): boolean; override;
|
||||
|
||||
procedure getintparaloc(list: TAsmList; pd : tabstractprocdef; nr: longint; var cgpara: tcgpara); override;
|
||||
procedure getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr: longint; var cgpara: tcgpara); override;
|
||||
function create_paraloc_info(p: tabstractprocdef; side: tcallercallee): longint; override;
|
||||
function create_varargs_paraloc_info(p: tabstractprocdef; side: tcallercallee; varargspara: tvarargsparalist): longint; override;
|
||||
function get_funcretloc(p : tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;override;
|
||||
@ -68,7 +68,7 @@ implementation
|
||||
result:=[RS_F0..RS_F31]-[RS_F8..RS_F9,RS_F18..RS_F27];
|
||||
end;
|
||||
|
||||
procedure tcpuparamanager.getintparaloc(list: TAsmList; pd : tabstractprocdef; nr: longint; var cgpara: tcgpara);
|
||||
procedure tcpuparamanager.getcgtempparaloc(list: TAsmList; pd : tabstractprocdef; nr: longint; var cgpara: tcgpara);
|
||||
var
|
||||
paraloc: pcgparalocation;
|
||||
psym: tparavarsym;
|
||||
|
@ -1113,9 +1113,9 @@ implementation
|
||||
paraloc1.init;
|
||||
paraloc2.init;
|
||||
paraloc3.init;
|
||||
paramanager.getintparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getintparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getintparaloc(list,pd,3,paraloc3);
|
||||
paramanager.getcgtempparaloc(list,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,paraloc2);
|
||||
paramanager.getcgtempparaloc(list,pd,3,paraloc3);
|
||||
a_load_const_cgpara(list,OS_SINT,len,paraloc3);
|
||||
a_loadaddr_ref_cgpara(list,dest,paraloc2);
|
||||
a_loadaddr_ref_cgpara(list,source,paraloc1);
|
||||
|
@ -65,7 +65,7 @@ implementation
|
||||
begin
|
||||
paraloc1.init;
|
||||
pd:=search_system_proc('fpc_tls_add');
|
||||
paramanager.getintparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
paramanager.getcgtempparaloc(current_asmdata.CurrAsmList,pd,1,paraloc1);
|
||||
if not(vo_is_weak_external in gvs.varoptions) then
|
||||
reference_reset_symbol(href,current_asmdata.RefAsmSymbol(gvs.mangledname,AT_DATA,use_indirect_symbol(gvs)),0,sizeof(pint),[])
|
||||
else
|
||||
|
@ -448,8 +448,8 @@ unit cgcpu;
|
||||
pd:=search_system_proc('_fpc_local_unwind');
|
||||
para1.init;
|
||||
para2.init;
|
||||
paramanager.getintparaloc(list,pd,1,para1);
|
||||
paramanager.getintparaloc(list,pd,2,para2);
|
||||
paramanager.getcgtempparaloc(list,pd,1,para1);
|
||||
paramanager.getcgtempparaloc(list,pd,2,para2);
|
||||
reference_reset_symbol(href,l,0,1,[]);
|
||||
{ TODO: using RSP is correct only while the stack is fixed!!
|
||||
(true now, but will change if/when allocating from stack is implemented) }
|
||||
|
Loading…
Reference in New Issue
Block a user