Forráskód Böngészése

Provide possibility to generate an indirect VMT symbol name.

symdef.pas, tobjectdef:
  * vmt_mangledname: add new parameter "indirect" (default "false") which triggers the generation of an indirect symbol name

git-svn-id: branches/svenbarth/packages@28339 -
svenbarth 11 éve
szülő
commit
33901129dd
1 módosított fájl, 8 hozzáadás és 3 törlés
  1. 8 3
      compiler/symdef.pas

+ 8 - 3
compiler/symdef.pas

@@ -419,7 +419,7 @@ interface
           function  needs_inittable : boolean;override;
           function  needs_separate_initrtti : boolean;override;
           function  rtti_mangledname(rt:trttitype;indirect:boolean=false):string;override;
-          function  vmt_mangledname : TSymStr;
+          function  vmt_mangledname(indirect:boolean=false) : TSymStr;
           procedure check_forwards; override;
           procedure insertvmt;
           procedure set_parent(c : tobjectdef);
@@ -6402,11 +6402,16 @@ implementation
       end;
 
 
-    function tobjectdef.vmt_mangledname : TSymStr;
+    function tobjectdef.vmt_mangledname(indirect:boolean) : TSymStr;
+      var
+        suffix : TSymStr;
       begin
         if not(oo_has_vmt in objectoptions) then
           Message1(parser_n_object_has_no_vmt,objrealname^);
-        vmt_mangledname:=make_mangledname('VMT',owner,objname^);
+        suffix:=objname^;
+        if indirect then
+          suffix:=suffix+'$indirect';
+        vmt_mangledname:=make_mangledname('VMT',owner,suffix);
       end;