فهرست منبع

One address too many on stack ?

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@6735 8c9fc860-2736-0410-a75d-ab315db34111
felixf 9 سال پیش
والد
کامیت
2dbd0e7594
2فایلهای تغییر یافته به همراه2 افزوده شده و 1 حذف شده
  1. BIN
      WinAos/A2.exe
  2. 2 1
      source/Win32.Objects.Mod

BIN
WinAos/A2.exe


+ 2 - 1
source/Win32.Objects.Mod

@@ -190,12 +190,13 @@ TYPE
 					Heaps.RegisterCandidates( sp, stackBottom - sp );
 				END;
 			ELSIF Heaps.GCType = Heaps.MetaDataForStackGC THEN
-				WHILE (bp # Heaps.NilVal) & (sp <= bp) & (bp <= stackBottom)  DO
+				WHILE (bp # Heaps.NilVal) & (sp <= bp) & (bp < stackBottom)  DO
 					SYSTEM.GET(bp, n);
 					IF ODD(n) THEN (* procedure descriptor at bp *)
 						DEC(n);
 						desc := SYSTEM.VAL(Modules.ProcedureDescPointer, n);
 						IF desc # NIL THEN
+							(*TRACE(desc.pcFrom, desc.pcLimit, desc.offsets);*)
 							FOR i := 0 TO LEN(desc.offsets)-1 DO
 								adr := bp + desc.offsets[i]; (* pointer at offset *)
 								SYSTEM.GET(adr, p); (* load pointer *)