* moved $methodpointer type construction from psystem to pdecobj for JVM,

because java_jlobject needs to be available

git-svn-id: branches/jvmbackend@18553 -
This commit is contained in:
Jonas Maebe 2011-08-20 08:09:50 +00:00
parent 58d7a86252
commit aaff356c6d
2 changed files with 14 additions and 10 deletions

View File

@ -1217,6 +1217,8 @@ implementation
old_current_structdef: tabstractrecorddef;
old_current_genericdef,
old_current_specializedef: tstoreddef;
hrecst: trecordsymtable;
fsym: tfieldvarsym;
old_parse_generic: boolean;
list: TFPObjectList;
s: String;
@ -1279,7 +1281,18 @@ implementation
if (current_structdef.objname^='TOBJECT') then
class_tobject:=current_objectdef;
if (current_objectdef.objname^='JLOBJECT') then
java_jlobject:=current_objectdef;
begin
java_jlobject:=current_objectdef;
{ the methodpointer type is normally created in
psystem, but java_jlobject is not yet available
there... }
hrecst:=trecordsymtable.create('',1);
fsym:=tfieldvarsym.create('$proc',vs_value,java_jlobject,[]);
hrecst.insert(fsym);
hrecst.addfield(fsym,vis_hidden);
methodpointertype:=trecorddef.create('',hrecst);
systemunit.insert(ttypesym.create('$methodpointer',methodpointertype));
end;
if (current_objectdef.objname^='JLTHROWABLE') then
java_jlthrowable:=current_objectdef;
if (current_objectdef.objname^='FPCBASERECORDTYPE') then

View File

@ -401,15 +401,6 @@ implementation
addfield(hrecst,tfieldvarsym.create('$self',vs_value,voidpointertype,[]));
methodpointertype:=trecorddef.create('',hrecst);
addtype('$methodpointer',methodpointertype);
end
else
begin
{$if defined(jvm) and not defined(nounsupported)}
hrecst:=trecordsymtable.create('',1);
addfield(hrecst,tfieldvarsym.create('$proc',vs_value,voidpointertype,[]));
methodpointertype:=trecorddef.create('',hrecst);
addtype('$methodpointer',methodpointertype);
{$endif}
end;
symtablestack.pop(systemunit);
end;