Ver código fonte

Fixed missing patch of link register in up-call to finalizer of base object

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@6527 8c9fc860-2736-0410-a75d-ab315db34111
eth.negelef 9 anos atrás
pai
commit
f046347ded
1 arquivos alterados com 3 adições e 0 exclusões
  1. 3 0
      source/FoxIntermediateBackend.Mod

+ 3 - 0
source/FoxIntermediateBackend.Mod

@@ -709,6 +709,9 @@ TYPE
 						END;
 						implementationVisitor.EmitLeave(ir, x.position,cc);
 						IF finalizer THEN
+							IF backend.hasLinkRegister THEN
+								ir.Emit(Pop(-1, implementationVisitor.lr));
+							END;	
 							Basic.ToSegmentedName("BaseTypes.Object.Finalize", name);
 							IntermediateCode.InitAddress(dest, addressType, name , 0, 0);
 							ir.Emit(Br(x.position,dest));