|
@@ -44,11 +44,11 @@ interface
|
|
|
function published_properties_count(st:tsymtable):longint;
|
|
|
procedure published_properties_write_rtti_data(propnamelist:TFPHashObjectList;st:tsymtable);
|
|
|
procedure collect_propnamelist(propnamelist:TFPHashObjectList;objdef:tobjectdef);
|
|
|
- function ref_rtti(def:tdef;rt:trttitype;indirect:boolean=false):tasmsymbol;
|
|
|
+ function ref_rtti(def:tdef;rt:trttitype):tasmsymbol;
|
|
|
procedure write_rtti_name(def:tdef);
|
|
|
procedure write_rtti_data(def:tdef;rt:trttitype);
|
|
|
procedure write_child_rtti_data(def:tdef;rt:trttitype);
|
|
|
- procedure write_rtti_reference(def:tdef;rt:trttitype;indirect:boolean=false);
|
|
|
+ procedure write_rtti_reference(def:tdef;rt:trttitype);
|
|
|
procedure write_header(def: tdef; typekind: byte);
|
|
|
procedure write_string(const s: string);
|
|
|
procedure maybe_write_align;
|
|
@@ -160,7 +160,7 @@ implementation
|
|
|
Assigned(tobjectdef(def).childof) and
|
|
|
((rt=fullrtti) or (tobjectdef(def).childof.needs_inittable)) then
|
|
|
begin
|
|
|
- write_rtti_reference(tobjectdef(def).childof,rt,true);
|
|
|
+ write_rtti_reference(tobjectdef(def).childof,rt);
|
|
|
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_pint(0));
|
|
|
inc(fieldcnt);
|
|
|
end;
|
|
@@ -176,7 +176,7 @@ implementation
|
|
|
) and
|
|
|
not is_objc_class_or_protocol(tfieldvarsym(sym).vardef) then
|
|
|
begin
|
|
|
- write_rtti_reference(tfieldvarsym(sym).vardef,rt,true);
|
|
|
+ write_rtti_reference(tfieldvarsym(sym).vardef,rt);
|
|
|
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_pint(tfieldvarsym(sym).fieldoffset));
|
|
|
inc(fieldcnt);
|
|
|
end;
|
|
@@ -389,7 +389,7 @@ implementation
|
|
|
proctypesinfo:=$40
|
|
|
else
|
|
|
proctypesinfo:=0;
|
|
|
- write_rtti_reference(tpropertysym(sym).propdef,fullrtti,true);
|
|
|
+ write_rtti_reference(tpropertysym(sym).propdef,fullrtti);
|
|
|
writeaccessproc(palt_read,0,0);
|
|
|
writeaccessproc(palt_write,2,0);
|
|
|
{ is it stored ? }
|
|
@@ -483,7 +483,7 @@ implementation
|
|
|
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_32bit(def.max));
|
|
|
maybe_write_align; // is align necessary here?
|
|
|
{ write base type }
|
|
|
- write_rtti_reference(def.basedef,rt,true);
|
|
|
+ write_rtti_reference(def.basedef,rt);
|
|
|
for i := 0 to def.symtable.SymList.Count - 1 do
|
|
|
begin
|
|
|
hp:=tenumsym(def.symtable.SymList[i]);
|
|
@@ -587,7 +587,7 @@ implementation
|
|
|
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_8bit(otUByte));
|
|
|
end;
|
|
|
maybe_write_align;
|
|
|
- write_rtti_reference(def.elementdef,rt,true);
|
|
|
+ write_rtti_reference(def.elementdef,rt);
|
|
|
end;
|
|
|
|
|
|
|
|
@@ -616,7 +616,7 @@ implementation
|
|
|
while assigned(curdef) do
|
|
|
begin
|
|
|
{ Dims[i] PTypeInfo }
|
|
|
- write_rtti_reference(curdef.rangedef,rt,true);
|
|
|
+ write_rtti_reference(curdef.rangedef,rt);
|
|
|
inc(dimcount);
|
|
|
totalcount:=totalcount*curdef.elecount;
|
|
|
{ get the next static array }
|
|
@@ -632,7 +632,7 @@ implementation
|
|
|
{ dimension count }
|
|
|
current_asmdata.asmlists[al_rtti].InsertAfter(Tai_const.Create_8bit(dimcount),lastai);
|
|
|
{ last dimension element type }
|
|
|
- current_asmdata.asmlists[al_rtti].InsertAfter(Tai_const.Create_sym(ref_rtti(curdef.elementdef,rt,true)),lastai);
|
|
|
+ current_asmdata.asmlists[al_rtti].InsertAfter(Tai_const.Create_sym(ref_rtti(curdef.elementdef,rt)),lastai);
|
|
|
{ total element count }
|
|
|
current_asmdata.asmlists[al_rtti].InsertAfter(Tai_const.Create_pint(pint(totalcount)),lastai);
|
|
|
{ total size = elecount * elesize of the first arraydef }
|
|
@@ -649,12 +649,12 @@ implementation
|
|
|
{ size of elements }
|
|
|
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_pint(def.elesize));
|
|
|
{ element type }
|
|
|
- write_rtti_reference(def.elementdef,rt,true);
|
|
|
+ write_rtti_reference(def.elementdef,rt);
|
|
|
{ variant type }
|
|
|
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_32bit(tstoreddef(def.elementdef).getvardef));
|
|
|
{ element type }
|
|
|
if def.elementdef.needs_inittable then
|
|
|
- write_rtti_reference(def.elementdef,rt,true)
|
|
|
+ write_rtti_reference(def.elementdef,rt)
|
|
|
else
|
|
|
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_pint(0));
|
|
|
{ write unit name }
|
|
@@ -666,14 +666,14 @@ implementation
|
|
|
begin
|
|
|
write_header(def,tkClassRef);
|
|
|
maybe_write_align;
|
|
|
- write_rtti_reference(def.pointeddef,rt,true);
|
|
|
+ write_rtti_reference(def.pointeddef,rt);
|
|
|
end;
|
|
|
|
|
|
procedure pointerdef_rtti(def:tpointerdef);
|
|
|
begin
|
|
|
write_header(def,tkPointer);
|
|
|
maybe_write_align;
|
|
|
- write_rtti_reference(def.pointeddef,rt,true);
|
|
|
+ write_rtti_reference(def.pointeddef,rt);
|
|
|
end;
|
|
|
|
|
|
procedure recorddef_rtti(def:trecorddef);
|
|
@@ -759,7 +759,7 @@ implementation
|
|
|
write_param_flag(parasym);
|
|
|
maybe_write_align;
|
|
|
{ write param type }
|
|
|
- write_rtti_reference(parasym.vardef,fullrtti,true);
|
|
|
+ write_rtti_reference(parasym.vardef,fullrtti);
|
|
|
{ write name of current parameter }
|
|
|
write_string(parasym.realname);
|
|
|
end;
|
|
@@ -815,7 +815,7 @@ implementation
|
|
|
write_rtti_name(def.returndef);
|
|
|
maybe_write_align;
|
|
|
{ write result typeinfo }
|
|
|
- write_rtti_reference(def.returndef,fullrtti,true);
|
|
|
+ write_rtti_reference(def.returndef,fullrtti);
|
|
|
end;
|
|
|
|
|
|
{ write calling convention }
|
|
@@ -825,7 +825,7 @@ implementation
|
|
|
{ write params typeinfo }
|
|
|
for i:=0 to def.paras.count-1 do
|
|
|
if not(vo_is_hidden_para in tparavarsym(def.paras[i]).varoptions) then
|
|
|
- write_rtti_reference(tparavarsym(def.paras[i]).vardef,fullrtti,true);
|
|
|
+ write_rtti_reference(tparavarsym(def.paras[i]).vardef,fullrtti);
|
|
|
end
|
|
|
else
|
|
|
begin
|
|
@@ -839,7 +839,7 @@ implementation
|
|
|
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_8bit(ProcCallOptionToCallConv[def.proccalloption]));
|
|
|
maybe_write_align;
|
|
|
{ write result typeinfo }
|
|
|
- write_rtti_reference(def.returndef,fullrtti,true);
|
|
|
+ write_rtti_reference(def.returndef,fullrtti);
|
|
|
{ write parameter count }
|
|
|
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_8bit(def.maxparacount));
|
|
|
for i:=0 to def.paras.count-1 do
|
|
@@ -879,12 +879,12 @@ implementation
|
|
|
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_nil_dataptr);
|
|
|
|
|
|
{ write parent typeinfo }
|
|
|
- write_rtti_reference(def.childof,fullrtti,true);
|
|
|
+ write_rtti_reference(def.childof,fullrtti);
|
|
|
|
|
|
{ write typeinfo of extended type }
|
|
|
if is_objectpascal_helper(def) then
|
|
|
if assigned(def.extendeddef) then
|
|
|
- write_rtti_reference(def.extendeddef,fullrtti,true)
|
|
|
+ write_rtti_reference(def.extendeddef,fullrtti)
|
|
|
else
|
|
|
InternalError(2011033001);
|
|
|
|
|
@@ -917,7 +917,7 @@ implementation
|
|
|
collect_propnamelist(propnamelist,def);
|
|
|
|
|
|
{ write parent typeinfo }
|
|
|
- write_rtti_reference(def.childof,fullrtti,true);
|
|
|
+ write_rtti_reference(def.childof,fullrtti);
|
|
|
|
|
|
{ interface: write flags, iid and iidstr }
|
|
|
IntfFlags:=0;
|
|
@@ -1327,18 +1327,18 @@ implementation
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
- procedure TRTTIWriter.write_rtti_reference(def:tdef;rt:trttitype;indirect:boolean);
|
|
|
+ procedure TRTTIWriter.write_rtti_reference(def:tdef;rt:trttitype);
|
|
|
begin
|
|
|
if not assigned(def) or is_void(def) or ((rt<>initrtti) and is_objc_class_or_protocol(def)) then
|
|
|
current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_nil_dataptr)
|
|
|
else
|
|
|
- current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_sym(ref_rtti(def,rt,indirect)));
|
|
|
+ current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_sym(ref_rtti(def,rt)));
|
|
|
end;
|
|
|
|
|
|
|
|
|
- function TRTTIWriter.ref_rtti(def:tdef;rt:trttitype;indirect:boolean):tasmsymbol;
|
|
|
+ function TRTTIWriter.ref_rtti(def:tdef;rt:trttitype):tasmsymbol;
|
|
|
begin
|
|
|
- result:=current_asmdata.RefAsmSymbol(def.rtti_mangledname(rt,indirect),AT_DATA);
|
|
|
+ result:=current_asmdata.RefAsmSymbol(def.rtti_mangledname(rt,true),AT_DATA);
|
|
|
if (cs_create_pic in current_settings.moduleswitches) and
|
|
|
assigned(current_procinfo) then
|
|
|
include(current_procinfo.flags,pi_needs_got);
|