* 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
classrefdef :
resultdef:=left.resultdef;
recorddef,
objectdef:
{ access to the classtype while specializing? }
if (df_generic in left.resultdef.defoptions) then
begin
defaultresultdef:=true;
if assigned(current_structdef) then
begin
if assigned(current_structdef.genericdef) then
if current_structdef.genericdef=left.resultdef then
begin
if (left.resultdef.typ=objectdef) or
((target_info.system in systems_jvm) and
(left.resultdef.typ=recorddef)) then
begin
{ access to the classtype while specializing? }
if (df_generic in left.resultdef.defoptions) then
begin
defaultresultdef:=true;
if assigned(current_structdef) then
begin
resultdef:=tclassrefdef.create(current_structdef);
defaultresultdef:=false;
if assigned(current_structdef.genericdef) then
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
else
CGMessage(parser_e_cant_create_generics_of_this_type);
end
else
message(parser_e_cant_create_generics_of_this_type);
if defaultresultdef then
resultdef:=tclassrefdef.create(left.resultdef);
end
else
resultdef:=tclassrefdef.create(left.resultdef);
message(parser_e_cant_create_generics_of_this_type);
if defaultresultdef then
resultdef:=tclassrefdef.create(left.resultdef);
end
else
resultdef:=tclassrefdef.create(left.resultdef);
end
else
CGMessage(parser_e_pointer_to_class_expected);
end
else
CGMessage(parser_e_pointer_to_class_expected);
end;