mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 00:09:09 +02:00
* don't create (useless) temporary array/record/... for the result
of functions at the caller side, since these will already be allocated at the callee side * added comment to cpupara explaining why we never allocate the function result on the caller side and then pass it as an invisible parameter, but instead always let the callee allocate it git-svn-id: branches/jvmbackend@18420 -
This commit is contained in:
parent
a82831b2e9
commit
254636ab84
@ -147,6 +147,10 @@ implementation
|
||||
|
||||
function TJVMParaManager.ret_in_param(def: tdef; calloption: tproccalloption): boolean;
|
||||
begin
|
||||
{ not as efficient as returning in param for jvmimplicitpointertypes,
|
||||
but in the latter case the routines are harder to use from Java
|
||||
(especially for arrays), because the caller then manually has to
|
||||
allocate the instance/array of the right size }
|
||||
Result:=false;
|
||||
end;
|
||||
|
||||
|
@ -80,7 +80,12 @@ implementation
|
||||
procedure tjvmcallnode.set_result_location(realresdef: tstoreddef);
|
||||
begin
|
||||
location_reset_ref(location,LOC_REFERENCE,def_cgsize(realresdef),1);
|
||||
tg.gethltemp(current_asmdata.CurrAsmList,realresdef,realresdef.size,tt_normal,location.reference);
|
||||
{ in case of jvmimplicitpointertype(), the function will have allocated
|
||||
it already and we don't have to allocate it again here }
|
||||
if not jvmimplicitpointertype(realresdef) then
|
||||
tg.gethltemp(current_asmdata.CurrAsmList,realresdef,realresdef.size,tt_normal,location.reference)
|
||||
else
|
||||
tg.gethltemp(current_asmdata.CurrAsmList,java_jlobject,java_jlobject.size,tt_normal,location.reference);
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user