* converted ncgrtti to the high level typed constant builder

o the result is still not very clean due to the fact that this data
     is almost completely unstructured due to variable-length strings
     everywhere, which means that
    a) we cannot just load recorddefs from the system or typeinfo unit
       and use those as templates
    b) we cannot easily reuse the recorddefs we create ourselves (except
       if the strings have the same length -- this is the reason for all
       of the names specified to begin_anonymous_record: to reuse defs
       as much as possible rather than creating new ones all the time)
    c) we have to add explicitly aligned subrecords everywhere to insert
       explicit alignment on platforms that need it

git-svn-id: trunk@31255 -
This commit is contained in:
Jonas Maebe 2015-07-30 16:58:17 +00:00
parent c946a85ae6
commit d7f6744f7b
2 changed files with 530 additions and 352 deletions

File diff suppressed because it is too large Load Diff

View File

@ -632,6 +632,7 @@ type
{ prefixes for internally generated type names (centralised to avoid
accidental collisions) }
tinternaltypeprefix = (
itp_1byte,
itp_llvmstruct,
itp_vmtdef,
itp_vmt_tstringmesssagetable,
@ -639,7 +640,17 @@ type
itp_vmt_tmethod_name_table,
itp_vmt_intern_msgint_table,
itp_vmt_intern_tmethodnamerec,
itp_vmt_intern_tmethodnametable
itp_vmt_intern_tmethodnametable,
itp_rttidef,
itp_rtti_header,
itp_rtti_prop,
itp_rtti_ansistr,
itp_rtti_ord_outer,
itp_rtti_ord_inner,
itp_rtti_ord_64bit,
itp_rtti_normal_array,
itp_rtti_dyn_array,
itp_rtti_proc_param
);
{ The order is from low priority to high priority,
@ -742,6 +753,7 @@ inherited_objectoptions : tobjectoptions = [oo_has_virtual,oo_has_private,oo_has
);
internaltypeprefixName : array[tinternaltypeprefix] of TSymStr = (
'$1byte$',
'$llvmstruct$',
'$vmtdef$',
'$vmt_TStringMesssageTable$',
@ -749,7 +761,17 @@ inherited_objectoptions : tobjectoptions = [oo_has_virtual,oo_has_private,oo_has
'$vmt_tmethod_name_table$',
'$vmt_intern_msgint_table$',
'$vmt_intern_tmethodnamerec$',
'$vmt_intern_tmethodnametable$'
'$vmt_intern_tmethodnametable$',
'$rttidef$',
'$rtti_header$',
'$rtti_prop$',
'$rtti_ansistr$',
'$rtti_ord_outer$',
'$rtti_ord_inner$',
'$rtti_ord_64bit$',
'$rtti_normal_array$',
'$rtti_dyn_array$',
'$rtti_proc_param$'
);