* 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 if (sym.typ=fieldvarsym) and
assigned(tfieldvarsym(sym).externalname) then assigned(tfieldvarsym(sym).externalname) then
result:=jvmmangledbasename(sym,tfieldvarsym(sym).externalname^,withsignature) 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 else
result:=jvmmangledbasename(sym,sym.RealName,withsignature); result:=jvmmangledbasename(sym,sym.RealName,withsignature);
end; end;

View File

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