|
@@ -1135,7 +1135,7 @@ implementation
|
|
{ only allowed for types that are not implicit pointers in Pascal (in
|
|
{ only allowed for types that are not implicit pointers in Pascal (in
|
|
that case, ref contains a pointer to the actual data and we simply
|
|
that case, ref contains a pointer to the actual data and we simply
|
|
return that pointer) }
|
|
return that pointer) }
|
|
- if not wasmimplicitpointertype(fromsize) then
|
|
|
|
|
|
+ if not wasmAlwayInMem(fromsize) then
|
|
internalerror(2010120534);
|
|
internalerror(2010120534);
|
|
|
|
|
|
if assigned(ref.symbol) then begin
|
|
if assigned(ref.symbol) then begin
|
|
@@ -1803,7 +1803,7 @@ implementation
|
|
end
|
|
end
|
|
else
|
|
else
|
|
begin
|
|
begin
|
|
- if not wasmimplicitpointertype(def) then
|
|
|
|
|
|
+ if not wasmAlwayInMem(def) then
|
|
begin
|
|
begin
|
|
{ passed by reference in array of single element; l contains the
|
|
{ passed by reference in array of single element; l contains the
|
|
base address of the array }
|
|
base address of the array }
|
|
@@ -1969,7 +1969,7 @@ implementation
|
|
opc:=loadstoreopc(size,false,false,finishandval);
|
|
opc:=loadstoreopc(size,false,false,finishandval);
|
|
list.concat(taicpu.op_reg(opc,reg));
|
|
list.concat(taicpu.op_reg(opc,reg));
|
|
{ avoid problems with getting the size of an open array etc }
|
|
{ avoid problems with getting the size of an open array etc }
|
|
- if wasmimplicitpointertype(size) then
|
|
|
|
|
|
+ if wasmAlwayInMem(size) then
|
|
size:=ptruinttype;
|
|
size:=ptruinttype;
|
|
decstack(list,1);
|
|
decstack(list,1);
|
|
end;
|
|
end;
|
|
@@ -1986,7 +1986,7 @@ implementation
|
|
|
|
|
|
list.concat(taicpu.op_ref(opc,ref));
|
|
list.concat(taicpu.op_ref(opc,ref));
|
|
{ avoid problems with getting the size of an open array etc }
|
|
{ avoid problems with getting the size of an open array etc }
|
|
- if wasmimplicitpointertype(size) then
|
|
|
|
|
|
+ if wasmAlwayInMem(size) then
|
|
size:=ptruinttype;
|
|
size:=ptruinttype;
|
|
decstack(list,1+extra_slots);
|
|
decstack(list,1+extra_slots);
|
|
end;
|
|
end;
|
|
@@ -1999,7 +1999,7 @@ implementation
|
|
opc:=loadstoreopc(size,true,false,finishandval);
|
|
opc:=loadstoreopc(size,true,false,finishandval);
|
|
list.concat(taicpu.op_reg(opc,reg));
|
|
list.concat(taicpu.op_reg(opc,reg));
|
|
{ avoid problems with getting the size of an open array etc }
|
|
{ avoid problems with getting the size of an open array etc }
|
|
- if wasmimplicitpointertype(size) then
|
|
|
|
|
|
+ if wasmAlwayInMem(size) then
|
|
size:=ptruinttype;
|
|
size:=ptruinttype;
|
|
incstack(list,1);
|
|
incstack(list,1);
|
|
if finishandval<>-1 then
|
|
if finishandval<>-1 then
|
|
@@ -2019,7 +2019,7 @@ implementation
|
|
list.concat(taicpu.op_ref(opc,ref));
|
|
list.concat(taicpu.op_ref(opc,ref));
|
|
|
|
|
|
{ avoid problems with getting the size of an open array etc }
|
|
{ avoid problems with getting the size of an open array etc }
|
|
- if wasmimplicitpointertype(size) then
|
|
|
|
|
|
+ if wasmAlwayInMem(size) then
|
|
size:=ptruinttype;
|
|
size:=ptruinttype;
|
|
incstack(list,1-extra_slots);
|
|
incstack(list,1-extra_slots);
|
|
if finishandval<>-1 then
|
|
if finishandval<>-1 then
|
|
@@ -2324,7 +2324,7 @@ implementation
|
|
begin
|
|
begin
|
|
{ nothing }
|
|
{ nothing }
|
|
end
|
|
end
|
|
- else if wasmimplicitpointertype(vs.vardef) then
|
|
|
|
|
|
+ else if wasmAlwayInMem(vs.vardef) then
|
|
allocate_implicit_struct_with_base_ref(list,vs,ref)
|
|
allocate_implicit_struct_with_base_ref(list,vs,ref)
|
|
{ enums are class instances in Java, while they are ordinals in
|
|
{ enums are class instances in Java, while they are ordinals in
|
|
Pascal. When they are initialized with enum(0), such as in
|
|
Pascal. When they are initialized with enum(0), such as in
|
|
@@ -2377,7 +2377,7 @@ implementation
|
|
sym:=tsym(obj.symtable.symlist[i]);
|
|
sym:=tsym(obj.symtable.symlist[i]);
|
|
if (sym.typ=fieldvarsym) and
|
|
if (sym.typ=fieldvarsym) and
|
|
not(sp_static in sym.symoptions) and
|
|
not(sp_static in sym.symoptions) and
|
|
- (wasmimplicitpointertype(tfieldvarsym(sym).vardef) or
|
|
|
|
|
|
+ (wasmAlwayInMem(tfieldvarsym(sym).vardef) or
|
|
((tfieldvarsym(sym).vardef.typ=enumdef) and
|
|
((tfieldvarsym(sym).vardef.typ=enumdef) and
|
|
get_enum_init_val_ref(tfieldvarsym(sym).vardef,ref))) then
|
|
get_enum_init_val_ref(tfieldvarsym(sym).vardef,ref))) then
|
|
begin
|
|
begin
|
|
@@ -2400,7 +2400,7 @@ implementation
|
|
begin
|
|
begin
|
|
{ replace special types with their equivalent class type }
|
|
{ replace special types with their equivalent class type }
|
|
if (checkdef.typ=pointerdef) and
|
|
if (checkdef.typ=pointerdef) and
|
|
- wasmimplicitpointertype(tpointerdef(checkdef).pointeddef) then
|
|
|
|
|
|
+ wasmAlwayInMem(tpointerdef(checkdef).pointeddef) then
|
|
checkdef:=tpointerdef(checkdef).pointeddef;
|
|
checkdef:=tpointerdef(checkdef).pointeddef;
|
|
if (checkdef=voidpointertype) or
|
|
if (checkdef=voidpointertype) or
|
|
(checkdef.typ=formaldef) then
|
|
(checkdef.typ=formaldef) then
|