* if a mangledbasename is set for staticvarsyms, also use if when emitting

definitions

git-svn-id: branches/jvmbackend@18814 -
This commit is contained in:
Jonas Maebe 2011-08-23 15:26:06 +00:00
parent 54f9947406
commit 7010116096
2 changed files with 21 additions and 0 deletions

View File

@ -837,6 +837,9 @@ implementation
if (sym.typ=fieldvarsym) and
assigned(tfieldvarsym(sym).externalname) then
result:=jvmmangledbasename(sym,tfieldvarsym(sym).externalname^,withsignature)
else if (sym.typ=staticvarsym) and
(tstaticvarsym(sym).mangledbasename<>'') then
result:=jvmmangledbasename(sym,tstaticvarsym(sym).mangledbasename,withsignature)
else
result:=jvmmangledbasename(sym,sym.RealName,withsignature);
end;

View File

@ -226,6 +226,7 @@ interface
procedure ppuwrite(ppufile:tcompilerppufile);override;
function mangledname:TSymStr;override;
procedure set_mangledbasename(const s: TSymStr);
function mangledbasename: TSymStr;
procedure set_mangledname(const s:TSymStr);
procedure set_raw_mangledname(const s:TSymStr);
end;
@ -1594,8 +1595,12 @@ implementation
procedure tstaticvarsym.set_mangledbasename(const s: TSymStr);
begin
{$ifdef symansistr}
if _mangledname<>'' then
internalerror(2011082202);
_mangledbasename:=s;
{$else symansistr}
if assigned(_mangledname) then
internalerror(2011082202);
stringdispose(_mangledbasename);
_mangledbasename:=stringdup(s);
{$endif symansistr}
@ -1603,6 +1608,19 @@ implementation
end;
function tstaticvarsym.mangledbasename: TSymStr;
begin
{$ifdef symansistr}
result:=_mangledbasename;
{$else symansistr}
if assigned(_mangledbasename) then
result:=_mangledbasename^
else
result:='';
{$endif symansistr}
end;
procedure tstaticvarsym.set_mangledname(const s:TSymStr);
begin
{$ifndef symansistr}