* write_paralocs() takes a pcgpara instead of a tparavarsym as this is needed for the result location as well

git-svn-id: trunk@35287 -
This commit is contained in:
svenbarth 2017-01-13 16:20:30 +00:00
parent f905303c4a
commit cf18b7116e

View File

@ -28,7 +28,8 @@ interface
uses uses
cclasses,constexp, cclasses,constexp,
aasmbase,aasmcnst, aasmbase,aasmcnst,
symbase,symconst,symtype,symdef,symsym; symbase,symconst,symtype,symdef,symsym,
parabase;
type type
@ -60,7 +61,7 @@ interface
procedure write_header(tcb: ttai_typedconstbuilder; def: tdef; typekind: byte); procedure write_header(tcb: ttai_typedconstbuilder; def: tdef; typekind: byte);
function write_methodkind(tcb:ttai_typedconstbuilder;def:tabstractprocdef):byte; function write_methodkind(tcb:ttai_typedconstbuilder;def:tabstractprocdef):byte;
procedure write_callconv(tcb:ttai_typedconstbuilder;def:tabstractprocdef); procedure write_callconv(tcb:ttai_typedconstbuilder;def:tabstractprocdef);
procedure write_paralocs(tcb:ttai_typedconstbuilder;parasym:tparavarsym); procedure write_paralocs(tcb:ttai_typedconstbuilder;para:pcgpara);
procedure write_param_flag(tcb:ttai_typedconstbuilder;parasym:tparavarsym); procedure write_param_flag(tcb:ttai_typedconstbuilder;parasym:tparavarsym);
public public
constructor create; constructor create;
@ -86,7 +87,7 @@ implementation
symtable, symtable,
aasmtai,aasmdata, aasmtai,aasmdata,
defutil, defutil,
parabase,paramgr, paramgr,
wpobase wpobase
; ;
@ -247,12 +248,12 @@ implementation
end; end;
procedure TRTTIWriter.write_paralocs(tcb:ttai_typedconstbuilder;parasym:tparavarsym); procedure TRTTIWriter.write_paralocs(tcb:ttai_typedconstbuilder;para:pcgpara);
var var
locs : trttiparalocs; locs : trttiparalocs;
i : longint; i : longint;
begin begin
locs:=paramanager.cgparalocs_to_rttiparalocs(parasym.paraloc[callerside].location); locs:=paramanager.cgparalocs_to_rttiparalocs(para^.location);
if length(locs)>high(byte) then if length(locs)>high(byte) then
internalerror(2017010601); internalerror(2017010601);
tcb.emit_ord_const(length(locs),u8inttype); tcb.emit_ord_const(length(locs),u8inttype);