浏览代码

Generate an indirect VMT symbol for each generated VMT.

ncgvmt.pas, TVMTWriter:
  * writevmt: write a symbol with the indirect VMT name that references the direct VMT symbol

git-svn-id: branches/svenbarth/packages@28340 -
svenbarth 11 年之前
父节点
当前提交
988ed6c191
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      compiler/ncgvmt.pas

+ 6 - 0
compiler/ncgvmt.pas

@@ -932,6 +932,12 @@ implementation
 {$endif vtentry}
          if is_class(_class) then
            current_asmdata.asmlists[al_globals].concatlist(templist);
+
+        { write indirect VMT symbol }
+        current_asmdata.asmlists[al_globals].concat(Tai_symbol.Createname_global(_class.vmt_mangledname(true),AT_DATA,0));
+        current_asmdata.asmlists[al_globals].concat(Tai_const.Createname(_class.vmt_mangledname(false),AT_DATA,0));
+        current_asmdata.asmlists[al_globals].concat(Tai_symbol_end.Createname(_class.vmt_mangledname(true)));
+
         templist.Free;
       end;