浏览代码

* disable vtentry code until a clean implementation is done

git-svn-id: trunk@3934 -
peter 19 年之前
父节点
当前提交
722c91e8f3
共有 2 个文件被更改,包括 6 次插入0 次删除
  1. 2 0
      compiler/ncgcal.pas
  2. 4 0
      compiler/nobj.pas

+ 2 - 0
compiler/ncgcal.pas

@@ -894,6 +894,7 @@ implementation
                     not(is_cppclass(tprocdef(procdefinition)._class)) then
                     not(is_cppclass(tprocdef(procdefinition)._class)) then
                    cg.g_maybe_testvmt(current_asmdata.CurrAsmList,vmtreg,tprocdef(procdefinition)._class);
                    cg.g_maybe_testvmt(current_asmdata.CurrAsmList,vmtreg,tprocdef(procdefinition)._class);
 
 
+{$ifdef vtentry}
                  { Call through VMT, generate a VTREF symbol to notify the linker }
                  { Call through VMT, generate a VTREF symbol to notify the linker }
                  vmtoffset:=tprocdef(procdefinition)._class.vmtmethodoffset(tprocdef(procdefinition).extnumber);
                  vmtoffset:=tprocdef(procdefinition)._class.vmtmethodoffset(tprocdef(procdefinition).extnumber);
                  if not is_interface(tprocdef(procdefinition)._class) then
                  if not is_interface(tprocdef(procdefinition)._class) then
@@ -901,6 +902,7 @@ implementation
                      inc(current_asmdata.NextVTEntryNr);
                      inc(current_asmdata.NextVTEntryNr);
                      current_asmdata.CurrAsmList.Concat(tai_symbol.CreateName('VTREF'+tostr(current_asmdata.NextVTEntryNr)+'_'+tprocdef(procdefinition)._class.vmt_mangledname+'$$'+tostr(vmtoffset div sizeof(aint)),AT_FUNCTION,0));
                      current_asmdata.CurrAsmList.Concat(tai_symbol.CreateName('VTREF'+tostr(current_asmdata.NextVTEntryNr)+'_'+tprocdef(procdefinition)._class.vmt_mangledname+'$$'+tostr(vmtoffset div sizeof(aint)),AT_FUNCTION,0));
                    end;
                    end;
+{$endif vtentry}
 
 
                  reference_reset_base(href,vmtreg,vmtoffset);
                  reference_reset_base(href,vmtreg,vmtoffset);
 
 

+ 4 - 0
compiler/nobj.pas

@@ -1234,8 +1234,10 @@ implementation
                             else
                             else
                               procname:=procdefcoll^.data.mangledname;
                               procname:=procdefcoll^.data.mangledname;
                             List.concat(Tai_const.createname(procname,0));
                             List.concat(Tai_const.createname(procname,0));
+{$ifdef vtentry}			    
                             hs:='VTENTRY'+'_'+_class.vmt_mangledname+'$$'+tostr(_class.vmtmethodoffset(i) div sizeof(aint));
                             hs:='VTENTRY'+'_'+_class.vmt_mangledname+'$$'+tostr(_class.vmtmethodoffset(i) div sizeof(aint));
                             current_asmdata.asmlists[al_globals].concat(tai_symbol.CreateName(hs,AT_DATA,0));
                             current_asmdata.asmlists[al_globals].concat(tai_symbol.CreateName(hs,AT_DATA,0));
+{$endif vtentry}			    
                             break;
                             break;
                           end;
                           end;
                         procdefcoll:=procdefcoll^.next;
                         procdefcoll:=procdefcoll^.next;
@@ -1358,6 +1360,7 @@ implementation
          current_asmdata.asmlists[al_globals].concat(Tai_const.create(aitconst_ptr,0));
          current_asmdata.asmlists[al_globals].concat(Tai_const.create(aitconst_ptr,0));
          { write the size of the VMT }
          { write the size of the VMT }
          current_asmdata.asmlists[al_globals].concat(Tai_symbol_end.Createname(_class.vmt_mangledname));
          current_asmdata.asmlists[al_globals].concat(Tai_symbol_end.Createname(_class.vmt_mangledname));
+{$ifdef vtentry}	 
          { write vtinherit symbol to notify the linker of the class inheritance tree }
          { write vtinherit symbol to notify the linker of the class inheritance tree }
          hs:='VTINHERIT'+'_'+_class.vmt_mangledname+'$$';
          hs:='VTINHERIT'+'_'+_class.vmt_mangledname+'$$';
          if assigned(_class.childof) then
          if assigned(_class.childof) then
@@ -1365,6 +1368,7 @@ implementation
          else
          else
            hs:=hs+_class.vmt_mangledname;
            hs:=hs+_class.vmt_mangledname;
          current_asmdata.asmlists[al_globals].concat(tai_symbol.CreateName(hs,AT_DATA,0));
          current_asmdata.asmlists[al_globals].concat(tai_symbol.CreateName(hs,AT_DATA,0));
+{$endif vtentry}	 
       end;
       end;