|
@@ -808,6 +808,7 @@ implementation
|
|
{$endif WITHDMT}
|
|
{$endif WITHDMT}
|
|
interfacetable : tasmlabel;
|
|
interfacetable : tasmlabel;
|
|
templist : TAsmList;
|
|
templist : TAsmList;
|
|
|
|
+ offsetsym : tfieldvarsym;
|
|
begin
|
|
begin
|
|
{$ifdef WITHDMT}
|
|
{$ifdef WITHDMT}
|
|
dmtlabel:=gendmt;
|
|
dmtlabel:=gendmt;
|
|
@@ -915,6 +916,15 @@ implementation
|
|
current_asmdata.asmlists[al_globals].concat(Tai_const.Create_sym(strmessagetable))
|
|
current_asmdata.asmlists[al_globals].concat(Tai_const.Create_sym(strmessagetable))
|
|
else
|
|
else
|
|
current_asmdata.asmlists[al_globals].concat(Tai_const.Create_nil_dataptr);
|
|
current_asmdata.asmlists[al_globals].concat(Tai_const.Create_nil_dataptr);
|
|
|
|
+ if oo_is_reference_counted in _class.objectoptions then
|
|
|
|
+ begin
|
|
|
|
+ offsetsym:=tfieldvarsym(_class.refcount_field);
|
|
|
|
+ if not assigned(offsetsym) or (offsetsym.typ<>fieldvarsym) then
|
|
|
|
+ internalerror(2014101201);
|
|
|
|
+ current_asmdata.asmlists[al_globals].concat(Tai_const.Create(aitconst_ptr,offsetsym.fieldoffset));
|
|
|
|
+ end
|
|
|
|
+ else
|
|
|
|
+ current_asmdata.asmlists[al_globals].concat(Tai_const.Create(aitconst_ptr,0));
|
|
end;
|
|
end;
|
|
{ write virtual methods }
|
|
{ write virtual methods }
|
|
writevirtualmethods(current_asmdata.asmlists[al_globals]);
|
|
writevirtualmethods(current_asmdata.asmlists[al_globals]);
|