From dc9feba435df43cf21be70b1dda419d22599cd4e Mon Sep 17 00:00:00 2001 From: nickysn Date: Thu, 21 Jan 2021 17:03:49 +0000 Subject: [PATCH] - removed thlcgwasm.loadstoreopc and replaced it with direct code - this actually improves code readability now git-svn-id: branches/wasm@48274 - --- compiler/wasm32/hlcgcpu.pas | 41 ++++++++----------------------------- 1 file changed, 9 insertions(+), 32 deletions(-) diff --git a/compiler/wasm32/hlcgcpu.pas b/compiler/wasm32/hlcgcpu.pas index 01d2bb4a81..4e38fe4bc5 100644 --- a/compiler/wasm32/hlcgcpu.pas +++ b/compiler/wasm32/hlcgcpu.pas @@ -238,10 +238,6 @@ uses has to be and'ed after a load to get the final value, that constant is returned in finishandval (otherwise that value is set to -1) } function loadstoreopcref(def: tdef; isload: boolean; const ref: treference; out finishandval: tcgint): tasmop; - { return the load/store opcode to load/store from/to reg; if the result - has to be and'ed after a load to get the final value, that constant - is returned in finishandval (otherwise that value is set to -1) } - function loadstoreopc(def: tdef; isload, isarray: boolean; out finishandval: tcgint): tasmop; procedure resizestackfpuval(list: TAsmList; fromsize, tosize: tcgsize); { in case of an OS_32 OP_DIV, we have to use an OS_S64 OP_IDIV because the JVM does not support unsigned divisions } @@ -1669,15 +1665,8 @@ implementation end; procedure thlcgwasm.a_load_stack_reg(list: TAsmList; size: tdef; reg: tregister); - var - opc: tasmop; - finishandval: tcgint; begin - opc:=loadstoreopc(size,false,false,finishandval); - list.concat(taicpu.op_reg(opc,reg)); - { avoid problems with getting the size of an open array etc } - if wasmAlwayInMem(size) then - size:=ptruinttype; + list.concat(taicpu.op_reg(a_set_local,reg)); decstack(list,1); end; @@ -1699,18 +1688,9 @@ implementation end; procedure thlcgwasm.a_load_reg_stack(list: TAsmList; size: tdef; reg: tregister); - var - opc: tasmop; - finishandval: tcgint; begin - opc:=loadstoreopc(size,true,false,finishandval); - list.concat(taicpu.op_reg(opc,reg)); - { avoid problems with getting the size of an open array etc } - if wasmAlwayInMem(size) then - size:=ptruinttype; + list.concat(taicpu.op_reg(a_get_local,reg)); incstack(list,1); - if finishandval<>-1 then - a_op_const_stack(list,OP_AND,size,finishandval); end; procedure thlcgwasm.a_load_ref_stack(list: TAsmList; size: tdef; const ref: treference; extra_slots: longint); @@ -1784,16 +1764,13 @@ implementation end; end else - result:=loadstoreopc(def,isload,false,finishandval); - end; - - function thlcgwasm.loadstoreopc(def: tdef; isload, isarray: boolean; out finishandval: tcgint): tasmop; - var - size: longint; - begin - finishandval:=-1; - if isload then result := a_get_local - else result := a_set_local; + begin + finishandval:=-1; + if isload then + result := a_get_local + else + result := a_set_local; + end; end; procedure thlcgwasm.resize_stack_int_val(list: TAsmList; fromsize, tosize: tdef; formemstore: boolean);