|
@@ -48,32 +48,32 @@ uses
|
|
|
|
|
|
function def2regtyp(def: tdef): tregistertype; override;
|
|
|
|
|
|
- procedure a_load_const_cgpara(list : TAsmList;tosize : tdef;a : aint;const cgpara : TCGPara);override;
|
|
|
+ procedure a_load_const_cgpara(list : TAsmList;tosize : tdef;a : tcgint;const cgpara : TCGPara);override;
|
|
|
|
|
|
function a_call_name(list : TAsmList;pd : tprocdef;const s : TSymStr; forceresdef: tdef; weak: boolean): tcgpara;override;
|
|
|
procedure a_call_name_inherited(list : TAsmList;pd : tprocdef;const s : TSymStr);override;
|
|
|
procedure a_call_reg(list: TAsmList; pd: tabstractprocdef; reg: tregister); override;
|
|
|
|
|
|
- procedure a_load_const_reg(list : TAsmList;tosize : tdef;a : aint;register : tregister);override;
|
|
|
- procedure a_load_const_ref(list : TAsmList;tosize : tdef;a : aint;const ref : treference);override;
|
|
|
+ procedure a_load_const_reg(list : TAsmList;tosize : tdef;a : tcgint;register : tregister);override;
|
|
|
+ procedure a_load_const_ref(list : TAsmList;tosize : tdef;a : tcgint;const ref : treference);override;
|
|
|
procedure a_load_reg_ref(list : TAsmList;fromsize, tosize : tdef;register : tregister;const ref : treference);override;
|
|
|
procedure a_load_reg_reg(list : TAsmList;fromsize, tosize : tdef;reg1,reg2 : tregister);override;
|
|
|
procedure a_load_ref_reg(list : TAsmList;fromsize, tosize : tdef;const ref : treference;register : tregister);override;
|
|
|
procedure a_load_ref_ref(list : TAsmList;fromsize, tosize : tdef;const sref : treference;const dref : treference);override;
|
|
|
procedure a_loadaddr_ref_reg(list : TAsmList;fromsize, tosize : tdef;const ref : treference;r : tregister);override;
|
|
|
|
|
|
- procedure a_op_const_reg(list: TAsmList; Op: TOpCG; size: tdef; a: Aint; reg: TRegister); override;
|
|
|
- procedure a_op_const_reg_reg(list: TAsmList; op: TOpCg; size: tdef; a: aint; src, dst: tregister); override;
|
|
|
- procedure a_op_const_ref(list: TAsmList; Op: TOpCG; size: tdef; a: Aint; const ref: TReference); override;
|
|
|
+ procedure a_op_const_reg(list: TAsmList; Op: TOpCG; size: tdef; a: tcgint; reg: TRegister); override;
|
|
|
+ procedure a_op_const_reg_reg(list: TAsmList; op: TOpCg; size: tdef; a: tcgint; src, dst: tregister); override;
|
|
|
+ procedure a_op_const_ref(list: TAsmList; Op: TOpCG; size: tdef; a: tcgint; const ref: TReference); override;
|
|
|
|
|
|
procedure a_op_ref_reg(list: TAsmList; Op: TOpCG; size: tdef; const ref: TReference; reg: TRegister); override;
|
|
|
procedure a_op_reg_reg_reg(list: TAsmList; op: TOpCg; size: tdef; src1, src2, dst: tregister); override;
|
|
|
procedure a_op_reg_reg(list: TAsmList; Op: TOpCG; size: tdef; reg1, reg2: TRegister); override;
|
|
|
- procedure a_op_const_reg_reg_checkoverflow(list: TAsmList; op: TOpCg; size: tdef; a: aint; src, dst: tregister;setflags : boolean;var ovloc : tlocation); override;
|
|
|
+ procedure a_op_const_reg_reg_checkoverflow(list: TAsmList; op: TOpCg; size: tdef; a: tcgint; src, dst: tregister;setflags : boolean;var ovloc : tlocation); override;
|
|
|
procedure a_op_reg_reg_reg_checkoverflow(list: TAsmList; op: TOpCg; size: tdef; src1, src2, dst: tregister;setflags : boolean;var ovloc : tlocation); override;
|
|
|
|
|
|
- procedure a_cmp_const_ref_label(list: TAsmList; size: tdef; cmp_op: topcmp; a: aint; const ref: treference; l: tasmlabel); override;
|
|
|
- procedure a_cmp_const_reg_label(list: TAsmList; size: tdef; cmp_op: topcmp; a: aint; reg: tregister; l: tasmlabel); override;
|
|
|
+ procedure a_cmp_const_ref_label(list: TAsmList; size: tdef; cmp_op: topcmp; a: tcgint; const ref: treference; l: tasmlabel); override;
|
|
|
+ procedure a_cmp_const_reg_label(list: TAsmList; size: tdef; cmp_op: topcmp; a: tcgint; reg: tregister; l: tasmlabel); override;
|
|
|
procedure a_cmp_ref_reg_label(list: TAsmList; size: tdef; cmp_op: topcmp; const ref: treference; reg: tregister; l: tasmlabel); override;
|
|
|
procedure a_cmp_reg_ref_label(list: TAsmList; size: tdef; cmp_op: topcmp; reg: tregister; const ref: treference; l: tasmlabel); override;
|
|
|
procedure a_cmp_reg_reg_label(list: TAsmList; size: tdef; cmp_op: topcmp; reg1, reg2: tregister; l: tasmlabel); override;
|
|
@@ -129,7 +129,7 @@ uses
|
|
|
{ extra_slots are the slots that are used by the reference, and that
|
|
|
will be removed by the load operation }
|
|
|
procedure a_load_ref_stack(list : TAsmList;size: tdef;const ref: treference;extra_slots: longint);
|
|
|
- procedure a_load_const_stack(list : TAsmList;size: tdef;a :aint; typ: TRegisterType);
|
|
|
+ procedure a_load_const_stack(list : TAsmList;size: tdef;a :tcgint; typ: TRegisterType);
|
|
|
|
|
|
procedure a_load_stack_loc(list : TAsmList;size: tdef;const loc: tlocation);
|
|
|
procedure a_load_loc_stack(list : TAsmList;size: tdef;const loc: tlocation);
|
|
@@ -137,7 +137,7 @@ uses
|
|
|
procedure a_loadfpu_const_stack(list : TAsmList;size: tdef;a :double);
|
|
|
|
|
|
procedure a_op_stack(list : TAsmList;op: topcg; size: tdef; trunc32: boolean);
|
|
|
- procedure a_op_const_stack(list : TAsmList;op: topcg; size: tdef;a : aint);
|
|
|
+ procedure a_op_const_stack(list : TAsmList;op: topcg; size: tdef;a : tcgint);
|
|
|
procedure a_op_reg_stack(list : TAsmList;op: topcg; size: tdef;reg: tregister);
|
|
|
procedure a_op_ref_stack(list : TAsmList;op: topcg; size: tdef;const ref: treference);
|
|
|
procedure a_op_loc_stack(list : TAsmList;op: topcg; size: tdef;const loc: tlocation);
|
|
@@ -158,7 +158,7 @@ uses
|
|
|
procedure a_cmp_stack_label(list : TAsmlist; size: tdef; cmp_op: topcmp; lab: tasmlabel);
|
|
|
{ these 2 routines perform the massaging expected by the previous one }
|
|
|
procedure maybe_adjust_cmp_stackval(list : TAsmlist; size: tdef; cmp_op: topcmp);
|
|
|
- function maybe_adjust_cmp_constval(size: tdef; cmp_op: topcmp; a: aint): aint;
|
|
|
+ function maybe_adjust_cmp_constval(size: tdef; cmp_op: topcmp; a: tcgint): tcgint;
|
|
|
{ truncate/sign extend after performing operations on values < 32 bit
|
|
|
that may have overflowed outside the range }
|
|
|
procedure maybe_adjust_op_result(list: TAsmList; op: TOpCg; size: tdef);
|
|
@@ -181,7 +181,7 @@ uses
|
|
|
|
|
|
procedure gen_typecheck(list: TAsmList; checkop: tasmop; checkdef: tdef);
|
|
|
protected
|
|
|
- procedure a_load_const_stack_intern(list : TAsmList;size : tdef;a : aint; typ: TRegisterType; legalize_const: boolean);
|
|
|
+ procedure a_load_const_stack_intern(list : TAsmList;size : tdef;a : tcgint; typ: TRegisterType; legalize_const: boolean);
|
|
|
|
|
|
function get_enum_init_val_ref(def: tdef; out ref: treference): boolean;
|
|
|
|
|
@@ -206,11 +206,11 @@ uses
|
|
|
{ return the load/store opcode to load/store from/to ref; 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 loadstoreopcref(def: tdef; isload: boolean; const ref: treference; out finishandval: aint): tasmop;
|
|
|
+ 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: aint): tasmop;
|
|
|
+ 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 }
|
|
@@ -298,7 +298,7 @@ implementation
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
- procedure thlcgjvm.a_load_const_cgpara(list: TAsmList; tosize: tdef; a: aint; const cgpara: TCGPara);
|
|
|
+ procedure thlcgjvm.a_load_const_cgpara(list: TAsmList; tosize: tdef; a: tcgint; const cgpara: TCGPara);
|
|
|
begin
|
|
|
tosize:=get_para_push_size(tosize);
|
|
|
if tosize=s8inttype then
|
|
@@ -325,7 +325,7 @@ implementation
|
|
|
end;
|
|
|
|
|
|
|
|
|
- procedure thlcgjvm.a_load_const_stack_intern(list : TAsmList;size : tdef;a : aint; typ: TRegisterType; legalize_const: boolean);
|
|
|
+ procedure thlcgjvm.a_load_const_stack_intern(list : TAsmList;size : tdef;a : tcgint; typ: TRegisterType; legalize_const: boolean);
|
|
|
begin
|
|
|
if legalize_const and
|
|
|
(typ=R_INTREGISTER) and
|
|
@@ -344,7 +344,7 @@ implementation
|
|
|
end;
|
|
|
|
|
|
|
|
|
- procedure thlcgjvm.a_load_const_stack(list : TAsmList;size : tdef;a : aint; typ: TRegisterType);
|
|
|
+ procedure thlcgjvm.a_load_const_stack(list : TAsmList;size : tdef;a : tcgint; typ: TRegisterType);
|
|
|
const
|
|
|
int2opc: array[-1..5] of tasmop = (a_iconst_m1,a_iconst_0,a_iconst_1,
|
|
|
a_iconst_2,a_iconst_3,a_iconst_4,a_iconst_5);
|
|
@@ -530,7 +530,7 @@ implementation
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
- procedure thlcgjvm.a_op_const_stack(list: TAsmList;op: topcg;size: tdef;a: aint);
|
|
|
+ procedure thlcgjvm.a_op_const_stack(list: TAsmList;op: topcg;size: tdef;a: tcgint);
|
|
|
var
|
|
|
trunc32: boolean;
|
|
|
begin
|
|
@@ -849,11 +849,11 @@ implementation
|
|
|
OS_32,OS_S32:
|
|
|
a_op_const_stack(list,OP_XOR,size,cardinal($80000000));
|
|
|
OS_64,OS_S64:
|
|
|
- a_op_const_stack(list,OP_XOR,size,aint($8000000000000000));
|
|
|
+ a_op_const_stack(list,OP_XOR,size,tcgint($8000000000000000));
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
- function thlcgjvm.maybe_adjust_cmp_constval(size: tdef; cmp_op: topcmp; a: aint): aint;
|
|
|
+ function thlcgjvm.maybe_adjust_cmp_constval(size: tdef; cmp_op: topcmp; a: tcgint): tcgint;
|
|
|
begin
|
|
|
result:=a;
|
|
|
{ use cmp_op because eventually that's what indicates the
|
|
@@ -865,7 +865,7 @@ implementation
|
|
|
OS_32,OS_S32:
|
|
|
result:=a xor cardinal($80000000);
|
|
|
OS_64,OS_S64:
|
|
|
- result:=a xor aint($8000000000000000);
|
|
|
+ result:=a xor tcgint($8000000000000000);
|
|
|
end;
|
|
|
end;
|
|
|
|
|
@@ -1050,13 +1050,13 @@ implementation
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
- procedure thlcgjvm.a_load_const_reg(list: TAsmList; tosize: tdef; a: aint; register: tregister);
|
|
|
+ procedure thlcgjvm.a_load_const_reg(list: TAsmList; tosize: tdef; a: tcgint; register: tregister);
|
|
|
begin
|
|
|
a_load_const_stack(list,tosize,a,def2regtyp(tosize));
|
|
|
a_load_stack_reg(list,tosize,register);
|
|
|
end;
|
|
|
|
|
|
- procedure thlcgjvm.a_load_const_ref(list: TAsmList; tosize: tdef; a: aint; const ref: treference);
|
|
|
+ procedure thlcgjvm.a_load_const_ref(list: TAsmList; tosize: tdef; a: tcgint; const ref: treference);
|
|
|
var
|
|
|
extra_slots: longint;
|
|
|
begin
|
|
@@ -1121,19 +1121,19 @@ implementation
|
|
|
a_load_ref_reg(list,java_jlobject,java_jlobject,ref,r);
|
|
|
end;
|
|
|
|
|
|
- procedure thlcgjvm.a_op_const_reg(list: TAsmList; Op: TOpCG; size: tdef; a: Aint; reg: TRegister);
|
|
|
+ procedure thlcgjvm.a_op_const_reg(list: TAsmList; Op: TOpCG; size: tdef; a: tcgint; reg: TRegister);
|
|
|
begin
|
|
|
a_op_const_reg_reg(list,op,size,a,reg,reg);
|
|
|
end;
|
|
|
|
|
|
- procedure thlcgjvm.a_op_const_reg_reg(list: TAsmList; op: TOpCg; size: tdef; a: aint; src, dst: tregister);
|
|
|
+ procedure thlcgjvm.a_op_const_reg_reg(list: TAsmList; op: TOpCg; size: tdef; a: tcgint; src, dst: tregister);
|
|
|
begin
|
|
|
a_load_reg_stack(list,size,src);
|
|
|
a_op_const_stack(list,op,size,a);
|
|
|
a_load_stack_reg(list,size,dst);
|
|
|
end;
|
|
|
|
|
|
- procedure thlcgjvm.a_op_const_ref(list: TAsmList; Op: TOpCG; size: tdef; a: Aint; const ref: TReference);
|
|
|
+ procedure thlcgjvm.a_op_const_ref(list: TAsmList; Op: TOpCG; size: tdef; a: tcgint; const ref: TReference);
|
|
|
var
|
|
|
extra_slots: longint;
|
|
|
begin
|
|
@@ -1168,7 +1168,7 @@ implementation
|
|
|
a_op_reg_reg_reg(list,op,size,reg1,reg2,reg2);
|
|
|
end;
|
|
|
|
|
|
- procedure thlcgjvm.a_op_const_reg_reg_checkoverflow(list: TAsmList; op: TOpCg; size: tdef; a: aint; src, dst: tregister; setflags: boolean; var ovloc: tlocation);
|
|
|
+ procedure thlcgjvm.a_op_const_reg_reg_checkoverflow(list: TAsmList; op: TOpCg; size: tdef; a: tcgint; src, dst: tregister; setflags: boolean; var ovloc: tlocation);
|
|
|
var
|
|
|
tmpreg: tregister;
|
|
|
begin
|
|
@@ -1267,7 +1267,7 @@ implementation
|
|
|
ovloc.loc:=LOC_VOID;
|
|
|
end;
|
|
|
|
|
|
- procedure thlcgjvm.a_cmp_const_ref_label(list: TAsmList; size: tdef; cmp_op: topcmp; a: aint; const ref: treference; l: tasmlabel);
|
|
|
+ procedure thlcgjvm.a_cmp_const_ref_label(list: TAsmList; size: tdef; cmp_op: topcmp; a: tcgint; const ref: treference; l: tasmlabel);
|
|
|
begin
|
|
|
if ref.base<>NR_EVAL_STACK_BASE then
|
|
|
a_load_ref_stack(list,size,ref,prepare_stack_for_ref(list,ref,false));
|
|
@@ -1276,7 +1276,7 @@ implementation
|
|
|
a_cmp_stack_label(list,size,cmp_op,l);
|
|
|
end;
|
|
|
|
|
|
- procedure thlcgjvm.a_cmp_const_reg_label(list: TAsmList; size: tdef; cmp_op: topcmp; a: aint; reg: tregister; l: tasmlabel);
|
|
|
+ procedure thlcgjvm.a_cmp_const_reg_label(list: TAsmList; size: tdef; cmp_op: topcmp; a: tcgint; reg: tregister; l: tasmlabel);
|
|
|
begin
|
|
|
a_load_reg_stack(list,size,reg);
|
|
|
maybe_adjust_cmp_stackval(list,size,cmp_op);
|
|
@@ -1904,7 +1904,7 @@ implementation
|
|
|
procedure thlcgjvm.a_load_stack_reg(list: TAsmList; size: tdef; reg: tregister);
|
|
|
var
|
|
|
opc: tasmop;
|
|
|
- finishandval: aint;
|
|
|
+ finishandval: tcgint;
|
|
|
begin
|
|
|
opc:=loadstoreopc(size,false,false,finishandval);
|
|
|
list.concat(taicpu.op_reg(opc,reg));
|
|
@@ -1917,7 +1917,7 @@ implementation
|
|
|
procedure thlcgjvm.a_load_stack_ref(list: TAsmList; size: tdef; const ref: treference; extra_slots: longint);
|
|
|
var
|
|
|
opc: tasmop;
|
|
|
- finishandval: aint;
|
|
|
+ finishandval: tcgint;
|
|
|
begin
|
|
|
{ fake location that indicates the value has to remain on the stack }
|
|
|
if ref.base=NR_EVAL_STACK_BASE then
|
|
@@ -1936,7 +1936,7 @@ implementation
|
|
|
procedure thlcgjvm.a_load_reg_stack(list: TAsmList; size: tdef; reg: tregister);
|
|
|
var
|
|
|
opc: tasmop;
|
|
|
- finishandval: aint;
|
|
|
+ finishandval: tcgint;
|
|
|
begin
|
|
|
opc:=loadstoreopc(size,true,false,finishandval);
|
|
|
list.concat(taicpu.op_reg(opc,reg));
|
|
@@ -1951,7 +1951,7 @@ implementation
|
|
|
procedure thlcgjvm.a_load_ref_stack(list: TAsmList; size: tdef; const ref: treference; extra_slots: longint);
|
|
|
var
|
|
|
opc: tasmop;
|
|
|
- finishandval: aint;
|
|
|
+ finishandval: tcgint;
|
|
|
begin
|
|
|
{ fake location that indicates the value is already on the stack? }
|
|
|
if (ref.base=NR_EVAL_STACK_BASE) then
|
|
@@ -1971,7 +1971,7 @@ implementation
|
|
|
gen_typecheck(list,a_checkcast,size);
|
|
|
end;
|
|
|
|
|
|
- function thlcgjvm.loadstoreopcref(def: tdef; isload: boolean; const ref: treference; out finishandval: aint): tasmop;
|
|
|
+ function thlcgjvm.loadstoreopcref(def: tdef; isload: boolean; const ref: treference; out finishandval: tcgint): tasmop;
|
|
|
const
|
|
|
{ isload static }
|
|
|
getputopc: array[boolean,boolean] of tasmop =
|
|
@@ -2002,7 +2002,7 @@ implementation
|
|
|
result:=loadstoreopc(def,isload,ref.arrayreftype<>art_none,finishandval);
|
|
|
end;
|
|
|
|
|
|
- function thlcgjvm.loadstoreopc(def: tdef; isload, isarray: boolean; out finishandval: aint): tasmop;
|
|
|
+ function thlcgjvm.loadstoreopc(def: tdef; isload, isarray: boolean; out finishandval: tcgint): tasmop;
|
|
|
var
|
|
|
size: longint;
|
|
|
begin
|