* added copyvaluepara call again

This commit is contained in:
peter 2000-11-06 23:15:01 +00:00
parent e2fd02814d
commit ac3c08daca
3 changed files with 19 additions and 16 deletions

View File

@ -2309,8 +2309,7 @@ implementation
{ initialize return value } { initialize return value }
if (procinfo^.returntype.def<>pdef(voiddef)) and if (procinfo^.returntype.def<>pdef(voiddef)) and
(procinfo^.returntype.def^.needs_inittable) and (procinfo^.returntype.def^.needs_inittable) then
not(is_class(procinfo^.returntype.def)) then
begin begin
procinfo^.flags:=procinfo^.flags or pi_needs_implicit_finally; procinfo^.flags:=procinfo^.flags or pi_needs_implicit_finally;
reset_reference(r); reset_reference(r);
@ -2333,18 +2332,15 @@ implementation
else else
aktprocsym^.definition^.localst^.foreach({$ifndef TP}@{$endif}initialize_data); aktprocsym^.definition^.localst^.foreach({$ifndef TP}@{$endif}initialize_data);
end; end;
{
{ initialisizes temp. ansi/wide string data }
inittempvariables;
{ generate copies of call by value parameters } { generate copies of call by value parameters }
if not(po_assembler in aktprocsym^.definition^.procoptions) and if not(po_assembler in aktprocsym^.definition^.procoptions) and
(([pocall_cdecl,pocall_cppdecl]*aktprocsym^.definition^.proccalloptions)=[]) then (([pocall_cdecl,pocall_cppdecl]*aktprocsym^.definition^.proccalloptions)=[]) then
aktprocsym^.definition^.parast^.foreach({$ifndef TP}@{$endif}copyvalueparas); aktprocsym^.definition^.parast^.foreach({$ifndef TP}@{$endif}copyvalueparas);
{ add a reference to all call by value/const parameters }
aktprocsym^.definition^.parast^.foreach({$ifndef TP}@{$endif}incr_data);
}
{ initialisizes temp. ansi/wide string data }
inittempvariables;
{ do we need an exception frame because of ansi/widestrings/interfaces ? } { do we need an exception frame because of ansi/widestrings/interfaces ? }
if not inlined and if not inlined and
((procinfo^.flags and pi_needs_implicit_finally)<>0) and ((procinfo^.flags and pi_needs_implicit_finally)<>0) and
@ -2932,7 +2928,10 @@ implementation
end. end.
{ {
$Log$ $Log$
Revision 1.7 2000-11-04 14:25:23 florian Revision 1.8 2000-11-06 23:15:01 peter
* added copyvaluepara call again
Revision 1.7 2000/11/04 14:25:23 florian
+ merged Attila's changes for interfaces, not tested yet + merged Attila's changes for interfaces, not tested yet
Revision 1.6 2000/10/31 22:02:55 peter Revision 1.6 2000/10/31 22:02:55 peter

View File

@ -1318,8 +1318,7 @@ implementation
if location.loc in [LOC_MEM,LOC_REFERENCE] then if location.loc in [LOC_MEM,LOC_REFERENCE] then
begin begin
{ data which must be finalized ? } { data which must be finalized ? }
if (resulttype^.needs_inittable) and if (resulttype^.needs_inittable) then
not(is_class(resulttype)) then
finalize(resulttype,location.reference,false); finalize(resulttype,location.reference,false);
{ release unused temp } { release unused temp }
ungetiftemp(location.reference) ungetiftemp(location.reference)
@ -1557,7 +1556,10 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.4 2000-11-04 14:25:23 florian Revision 1.5 2000-11-06 23:15:01 peter
* added copyvaluepara call again
Revision 1.4 2000/11/04 14:25:23 florian
+ merged Attila's changes for interfaces, not tested yet + merged Attila's changes for interfaces, not tested yet
Revision 1.3 2000/11/04 13:12:14 jonas Revision 1.3 2000/11/04 13:12:14 jonas

View File

@ -625,8 +625,7 @@ implementation
end end
else else
begin begin
if (right.resulttype^.needs_inittable) and if (right.resulttype^.needs_inittable) then
not(is_class(right.resulttype)) then
begin begin
{ this would be a problem } { this would be a problem }
if not(left.resulttype^.needs_inittable) then if not(left.resulttype^.needs_inittable) then
@ -1065,7 +1064,10 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.3 2000-11-04 14:25:23 florian Revision 1.4 2000-11-06 23:15:02 peter
* added copyvaluepara call again
Revision 1.3 2000/11/04 14:25:23 florian
+ merged Attila's changes for interfaces, not tested yet + merged Attila's changes for interfaces, not tested yet
Revision 1.2 2000/10/31 22:02:56 peter Revision 1.2 2000/10/31 22:02:56 peter