2
0
Эх сурвалжийг харах

Fixed generation of procedure table in cooperative case

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7255 8c9fc860-2736-0410-a75d-ab315db34111
negelef 8 жил өмнө
parent
commit
fc8f41fb92

+ 7 - 9
source/FoxIntermediateBackend.Mod

@@ -12701,7 +12701,7 @@ TYPE
 		PROCEDURE ProcedureDescriptorArray(section: IntermediateCode.Section; VAR numberProcs: LONGINT);
 		VAR sizePC, i: LONGINT; destination: Sections.Section;
 		BEGIN
-			ArrayBlock(section, sizePC,"Modules.ProcedureDescPointer",FALSE);
+			ArrayBlock(section, sizePC,"Modules.ProcedureDesc.@Pointer",FALSE);
 			numberProcs := 0;
 			FOR i := 0 TO module.allSections.Length() - 1 DO
 				destination := module.allSections.GetSection(i);
@@ -12891,14 +12891,12 @@ TYPE
 			referenceSection := Block("Heaps","SystemBlockDesc",".@References",referenceSectionOffset);
 			References(referenceSection);
 			procTableSection := Block("Heaps","SystemBlockDesc",".@ProcTable",procTableSectionOffset);
-			IF ~implementationVisitor.backend.cooperative THEN
-				ProcedureDescriptorArray(procTableSection, numberProcs);
-				IF ProtectModulesPointers THEN
-					name := "Heaps.AnyPtr";
-					offset := ToMemoryUnits(module.system,TypeRecordBaseOffset*module.system.addressSize);
-					(* set base pointer *)
-					NamedSymbolAt(procTableSection, procTableSectionOffset  -1 , name, NIL, 0, offset);
-				END;
+			ProcedureDescriptorArray(procTableSection, numberProcs);
+			IF ProtectModulesPointers THEN
+				name := "Heaps.AnyPtr";
+				offset := ToMemoryUnits(module.system,TypeRecordBaseOffset*module.system.addressSize);
+				(* set base pointer *)
+				NamedSymbolAt(procTableSection, procTableSectionOffset  -1 , name, NIL, 0, offset);
 			END;
 
 			emptyArraySection := Block("Heaps","SystemBlockDesc",".@EmptyArray",emptyArraySectionOffset);