mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 15:39:24 +01:00 
			
		
		
		
	* always generate RTTI patch from peter
This commit is contained in:
		
							parent
							
								
									69dbf59679
								
							
						
					
					
						commit
						9b3b94883b
					
				@ -526,6 +526,10 @@ implementation
 | 
			
		||||
                  tt.def.needs_inittable) then
 | 
			
		||||
                generate_inittable(newtype);
 | 
			
		||||
 | 
			
		||||
              { Always generate RTTI info for all types. This is to have typeinfo() return
 | 
			
		||||
                the same pointer }
 | 
			
		||||
              generate_rtti(newtype);
 | 
			
		||||
 | 
			
		||||
              { for objects we should write the vmt and interfaces.
 | 
			
		||||
                This need to be done after the rtti has been written, because
 | 
			
		||||
                it can contain a reference to that data (PFV)
 | 
			
		||||
@ -537,9 +541,6 @@ implementation
 | 
			
		||||
                 { generate and check virtual methods, must be done
 | 
			
		||||
                   before RTTI is written }
 | 
			
		||||
                 ch.genvmt;
 | 
			
		||||
                 { generate rtti info if published items are available }
 | 
			
		||||
                 if (oo_can_have_published in tobjectdef(tt.def).objectoptions) then
 | 
			
		||||
                   generate_rtti(newtype);
 | 
			
		||||
                 if is_interface(tobjectdef(tt.def)) then
 | 
			
		||||
                   ch.writeinterfaceids;
 | 
			
		||||
                 if (oo_has_vmt in tobjectdef(tt.def).objectoptions) then
 | 
			
		||||
@ -655,7 +656,10 @@ implementation
 | 
			
		||||
end.
 | 
			
		||||
{
 | 
			
		||||
  $Log$
 | 
			
		||||
  Revision 1.73  2003-12-10 16:37:01  peter
 | 
			
		||||
  Revision 1.74  2003-12-12 12:09:40  marco
 | 
			
		||||
   * always generate RTTI patch from peter
 | 
			
		||||
 | 
			
		||||
  Revision 1.73  2003/12/10 16:37:01  peter
 | 
			
		||||
    * global property support for fpc modes
 | 
			
		||||
 | 
			
		||||
  Revision 1.72  2003/11/12 15:48:48  peter
 | 
			
		||||
 | 
			
		||||
@ -5569,10 +5569,11 @@ implementation
 | 
			
		||||
             end;
 | 
			
		||||
           fullrtti :
 | 
			
		||||
             begin
 | 
			
		||||
               if objecttype in [odt_interfacecom,odt_interfacecorba] then
 | 
			
		||||
                 rttiList.concat(Tai_const.Create_32bit(0))
 | 
			
		||||
               if (oo_has_vmt in objectoptions) and
 | 
			
		||||
                  not(objecttype in [odt_interfacecom,odt_interfacecorba]) then
 | 
			
		||||
                 rttiList.concat(Tai_const_symbol.Createname(vmt_mangledname))
 | 
			
		||||
               else
 | 
			
		||||
                 rttiList.concat(Tai_const_symbol.Createname(vmt_mangledname));
 | 
			
		||||
                 rttiList.concat(Tai_const.Create_32bit(0));
 | 
			
		||||
 | 
			
		||||
               { write owner typeinfo }
 | 
			
		||||
               if assigned(childof) and (oo_can_have_published in childof.objectoptions) then
 | 
			
		||||
@ -6117,7 +6118,10 @@ implementation
 | 
			
		||||
end.
 | 
			
		||||
{
 | 
			
		||||
  $Log$
 | 
			
		||||
  Revision 1.191  2003-12-08 22:34:24  peter
 | 
			
		||||
  Revision 1.192  2003-12-12 12:09:40  marco
 | 
			
		||||
   * always generate RTTI patch from peter
 | 
			
		||||
 | 
			
		||||
  Revision 1.191  2003/12/08 22:34:24  peter
 | 
			
		||||
    * tai_const.create_32bit changed to cardinal
 | 
			
		||||
 | 
			
		||||
  Revision 1.190  2003/11/10 22:02:52  peter
 | 
			
		||||
 | 
			
		||||
@ -1583,9 +1583,6 @@ implementation
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    procedure tabsolutesym.deref;
 | 
			
		||||
      var
 | 
			
		||||
        srsym : tsym;
 | 
			
		||||
        srsymtable : tsymtable;
 | 
			
		||||
      begin
 | 
			
		||||
         { inheritance of varsym.deref ! }
 | 
			
		||||
         vartype.resolve;
 | 
			
		||||
@ -2596,20 +2593,8 @@ implementation
 | 
			
		||||
    function trttisym.mangledname : string;
 | 
			
		||||
      const
 | 
			
		||||
        prefix : array[trttitype] of string[5]=('RTTI_','INIT_');
 | 
			
		||||
      var
 | 
			
		||||
        s : string;
 | 
			
		||||
        p : tsymtable;
 | 
			
		||||
      begin
 | 
			
		||||
        s:='';
 | 
			
		||||
        p:=owner;
 | 
			
		||||
        while assigned(p) and (p.symtabletype=localsymtable) do
 | 
			
		||||
         begin
 | 
			
		||||
           s:=s+'_'+p.defowner.name;
 | 
			
		||||
           p:=p.defowner.owner;
 | 
			
		||||
         end;
 | 
			
		||||
        if not(p.symtabletype in [globalsymtable,staticsymtable]) then
 | 
			
		||||
         internalerror(200108265);
 | 
			
		||||
        mangledname:=prefix[rttityp]+p.name^+s+'$_'+Copy(name,5,255);
 | 
			
		||||
        result:=make_mangledname(prefix[rttityp],owner,Copy(name,5,255));
 | 
			
		||||
      end;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -2699,7 +2684,10 @@ implementation
 | 
			
		||||
end.
 | 
			
		||||
{
 | 
			
		||||
  $Log$
 | 
			
		||||
  Revision 1.137  2003-12-01 18:44:15  peter
 | 
			
		||||
  Revision 1.138  2003-12-12 12:09:40  marco
 | 
			
		||||
   * always generate RTTI patch from peter
 | 
			
		||||
 | 
			
		||||
  Revision 1.137  2003/12/01 18:44:15  peter
 | 
			
		||||
    * fixed some crashes
 | 
			
		||||
    * fixed varargs and register calling probs
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user