Răsfoiți Sursa

added a useful tool to find GC bugs (show procedure descriptor in stack trace if possible)

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7851 8c9fc860-2736-0410-a75d-ab315db34111
felixf 7 ani în urmă
părinte
comite
3ff7c52f85
1 a modificat fișierele cu 8 adăugiri și 0 ștergeri
  1. 8 0
      source/Generic.Unix.Objects.Mod

+ 8 - 0
source/Generic.Unix.Objects.Mod

@@ -209,6 +209,14 @@ TYPE
 				sp := state.SP; bp := state.BP; 
 			
 				IF Heaps.GCType = Heaps.HeuristicStackInspectionGC THEN	
+					IF (bp < stackBottom) & (bp # 0) THEN
+						S.GET( bp, n );
+						IF ODD( n ) THEN (* procedure descriptor at bp *)
+							IF n > 1024 THEN
+							desc := S.VAL( Modules.ProcedureDescPointer, n-1 ); (* tracing !*)
+							END;
+						END;
+					END; 
 					IF (stackBottom # 0) & (sp # 0) & (sp <= stackBottom) THEN
 						Heaps.RegisterCandidates( sp, stackBottom - sp );
 					END;