+ introduced ttgwasm(tg).allocframepointer and .allocbasepointer

git-svn-id: branches/wasm@47888 -
This commit is contained in:
nickysn 2020-12-29 06:08:40 +00:00
parent dc151465c5
commit 08580ed628
2 changed files with 14 additions and 3 deletions

View File

@ -1673,9 +1673,8 @@ implementation
pd:=tcpuprocdef(current_procinfo.procdef);
g_procdef(list,pd);
{ hack: we use tt_regallocator to force a local }
tg.gethltemp(list,voidpointertype,voidpointertype.size,tt_regallocator,pd.frame_pointer_ref);
tg.gethltemp(list,voidpointertype,voidpointertype.size,tt_regallocator,pd.base_pointer_ref);
ttgwasm(tg).allocframepointer(list,pd.frame_pointer_ref);
ttgwasm(tg).allocbasepointer(list,pd.base_pointer_ref);
{ the localsize is based on tg.lasttemp -> already in terms of stack
slots rather than bytes }

View File

@ -78,6 +78,8 @@ unit tgcpu;
procedure gethltemp(list: TAsmList; def: tdef; forcesize: asizeint; temptype: ttemptype; out ref: treference); override;
procedure gethltempmanaged(list: TAsmList; def: tdef; temptype: ttemptype; out ref: treference); override;
procedure ungettemp(list: TAsmList; const ref : treference); override;
procedure allocframepointer(list: TAsmList; out ref: treference);
procedure allocbasepointer(list: TAsmList; out ref: treference);
end;
function defToWasmBasic(def: tdef; var wbt: TWasmBasicType): Boolean;
@ -197,6 +199,16 @@ unit tgcpu;
inherited;
end;
procedure ttgwasm.allocframepointer(list: TAsmList; out ref: treference);
begin
allocLocalVarToRef(wbt_i32,ref);
end;
procedure ttgwasm.allocbasepointer(list: TAsmList; out ref: treference);
begin
allocLocalVarToRef(wbt_i32,ref);
end;
procedure ttgwasm.allocLocalVarToRef(wbt: TWasmBasicType; out ref: treference);
var
idx : integer;