- || length == APROCESS
-#endif
- )
- {
- if (length == AVIRT) /* ARRAYOF <reference> */
- for (t2 = am+3; t2 < t1; t2 += 2)
- (*action)((virtaddr *)(M+t2));
- }
- else /* neither an array nor a file */
- {
- ptr = prototype [ length ];
- switch (ptr->kind) /* compute the number of the system */
- /* virtual variables */
- {
- case RECORD : length = 0; t3 = 0; break;
- case COROUTINE : length = 3; t3 = CL; break;
- case PROCESS : length = 5; t3 = disp2off; break;
- case FUNCTION :
- case PROCEDURE : length = 2; t3 = RPCDL+1; break; /* PS */
- case HANDLER : length = 2; t3 = SIGNR; break;
- default : length = 2; t3 = STATSL; break;
- }
-
- /* action for system reference variables */
- for (t2 = length; t2 >= 1; t2-- )
- (*action)((virtaddr *)(M+t1+offset[ t2 ]));
-
- /* action for temporary reference variables */
- t1 = am+M[ am ]+t3;
- for (t2 = am+ptr->span; t2 < t1; t2 += 2)
- (*action)((virtaddr *)(M+t2));
-
- /* action for user reference variables */
- t1 = ptr->reflist;
- for (t2 = t1+ptr->lthreflist-1; t2 >= t1; t2-- )
- (*action)((virtaddr *)(M+am+M[ t2 ]));
- }
-} /* end traverse */
-
-
-/* Mark killed objects by substituting prototype number by a special value.
+ || length == APROCESS
+#endif
+ ) {
+ /* ARRAYOF <reference> */
+ if (length == AVIRT)
+ for (t2 = am + 3; t2 < t1; t2 += 2)
+ (*action)((virtaddr *)(M+t2));
+ }
+ else {
+ /* neither an array nor a file */
+ ptr = prototype[length];
+ /* compute the number of the system virtual variables */
+ switch (ptr->kind) {
+ case RECORD:
+ length = 0;
+ t3 = 0;
+ break;
+ case COROUTINE:
+ length = 3;
+ t3 = CL;
+ break;
+ case PROCESS:
+ length = 5;
+ t3 = disp2off;
+ break;
+ case FUNCTION:
+ /* PS */
+ case PROCEDURE:
+ length = 2;
+ t3 = RPCDL + 1;
+ break;
+ case HANDLER:
+ length = 2;
+ t3 = SIGNR;
+ break;
+ default:
+ length = 2;
+ t3 = STATSL;
+ break;
+ }
+
+ /* action for system reference variables */
+ for (t2 = length; t2 >= 1; t2--)
+ (*action)((virtaddr *)(M+t1+offset[t2]));
+
+ /* action for temporary reference variables */
+ t1 = am + M[am] + t3;
+ for (t2 = am + ptr->span; t2 < t1; t2 += 2)
+ (*action)((virtaddr *)(M + t2));
+
+ /* action for user reference variables */
+ t1 = ptr->reflist;
+ for (t2 = t1 + ptr->lthreflist - 1; t2 >= t1; t2--)
+ (*action)((virtaddr *)(M + am + M[t2]));
+ }
+}
+
+/**
+ * Mark killed objects by substituting prototype number by a special value.