mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 17:09:10 +02:00
+ allocate 'noreuse' locals in allocbasepointer and allocframepointer
git-svn-id: branches/wasm@47898 -
This commit is contained in:
parent
158da03691
commit
253e64f66b
@ -70,6 +70,7 @@ unit tgcpu;
|
|||||||
procedure updateFirstTemp;
|
procedure updateFirstTemp;
|
||||||
|
|
||||||
procedure allocLocalVarToRef(wbt: TWasmBasicType; out ref: treference);
|
procedure allocLocalVarToRef(wbt: TWasmBasicType; out ref: treference);
|
||||||
|
procedure allocLocalVarNoReuseToRef(wbt: TWasmBasicType; out ref: treference);
|
||||||
procedure LocalVarToRef(idx: integer; size: Integer; out ref: treference);
|
procedure LocalVarToRef(idx: integer; size: Integer; out ref: treference);
|
||||||
public
|
public
|
||||||
localvars: TWasmLocalVars;
|
localvars: TWasmLocalVars;
|
||||||
@ -203,12 +204,12 @@ unit tgcpu;
|
|||||||
|
|
||||||
procedure ttgwasm.allocframepointer(list: TAsmList; out ref: treference);
|
procedure ttgwasm.allocframepointer(list: TAsmList; out ref: treference);
|
||||||
begin
|
begin
|
||||||
allocLocalVarToRef(wbt_i32,ref);
|
allocLocalVarNoReuseToRef(wbt_i32,ref);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure ttgwasm.allocbasepointer(list: TAsmList; out ref: treference);
|
procedure ttgwasm.allocbasepointer(list: TAsmList; out ref: treference);
|
||||||
begin
|
begin
|
||||||
allocLocalVarToRef(wbt_i32,ref);
|
allocLocalVarNoReuseToRef(wbt_i32,ref);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure ttgwasm.allocLocalVarToRef(wbt: TWasmBasicType; out ref: treference);
|
procedure ttgwasm.allocLocalVarToRef(wbt: TWasmBasicType; out ref: treference);
|
||||||
@ -219,6 +220,14 @@ unit tgcpu;
|
|||||||
localVarToRef(idx, 1, ref);
|
localVarToRef(idx, 1, ref);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure ttgwasm.allocLocalVarNoReuseToRef(wbt: TWasmBasicType; out ref: treference);
|
||||||
|
var
|
||||||
|
idx : integer;
|
||||||
|
begin
|
||||||
|
idx := localvars.allocnoreuse(wbt);
|
||||||
|
localVarToRef(idx, 1, ref);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure ttgwasm.localVarToRef(idx: integer; size: integer; out ref: treference);
|
procedure ttgwasm.localVarToRef(idx: integer; size: integer; out ref: treference);
|
||||||
begin
|
begin
|
||||||
reference_reset_base(ref,NR_LOCAL_STACK_POINTER_REG,idx,ctempposinvalid,size,[]);
|
reference_reset_base(ref,NR_LOCAL_STACK_POINTER_REG,idx,ctempposinvalid,size,[]);
|
||||||
|
Loading…
Reference in New Issue
Block a user