* re-enabled loadvmtaddrnode for records on JVM targets, fixes

tests/test/jvm/tpvar.pp after r23417

git-svn-id: trunk@23430 -
This commit is contained in:
Jonas Maebe 2013-01-17 19:45:09 +00:00
parent 65cbb4e9ba
commit 583eb3f9a4

View File

@ -168,29 +168,39 @@ implementation
case left.resultdef.typ of case left.resultdef.typ of
classrefdef : classrefdef :
resultdef:=left.resultdef; resultdef:=left.resultdef;
recorddef,
objectdef: objectdef:
{ access to the classtype while specializing? } begin
if (df_generic in left.resultdef.defoptions) then if (left.resultdef.typ=objectdef) or
begin ((target_info.system in systems_jvm) and
defaultresultdef:=true; (left.resultdef.typ=recorddef)) then
if assigned(current_structdef) then begin
begin { access to the classtype while specializing? }
if assigned(current_structdef.genericdef) then if (df_generic in left.resultdef.defoptions) then
if current_structdef.genericdef=left.resultdef then begin
defaultresultdef:=true;
if assigned(current_structdef) then
begin begin
resultdef:=tclassrefdef.create(current_structdef); if assigned(current_structdef.genericdef) then
defaultresultdef:=false; if current_structdef.genericdef=left.resultdef then
begin
resultdef:=tclassrefdef.create(current_structdef);
defaultresultdef:=false;
end
else
CGMessage(parser_e_cant_create_generics_of_this_type);
end end
else else
CGMessage(parser_e_cant_create_generics_of_this_type); message(parser_e_cant_create_generics_of_this_type);
end if defaultresultdef then
else resultdef:=tclassrefdef.create(left.resultdef);
message(parser_e_cant_create_generics_of_this_type); end
if defaultresultdef then else
resultdef:=tclassrefdef.create(left.resultdef); resultdef:=tclassrefdef.create(left.resultdef);
end end
else else
resultdef:=tclassrefdef.create(left.resultdef); CGMessage(parser_e_pointer_to_class_expected);
end
else else
CGMessage(parser_e_pointer_to_class_expected); CGMessage(parser_e_pointer_to_class_expected);
end; end;