[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GC not reclaiming impure strings held by macro frames



    Date: 10 March 1984 18:48-EST
    From: Kent M Pitman <KMP @ MIT-MC>

    It looks probable that Teco is considering all macro frames to be live,
    rather checking to see if they really are.

Your guess is right.

To do it your way, you can change GCC2 to chain through the macro pdl
list starting with what's in MACPTR and following by way of MFLINK.
Something like (untested of course):
GCC1:	MOVE T,MACPTR
GCC2:	MOVEI T,MFCSTR(T)	;POINT TO CSTR
	SKIPE (T)
	 CALL GCMA
	ADDI T,MFARG1-MFCSTR
	CALL GCM	;MARK MACRO ARG 1 (MAY BE A STRING POINTER)
	ADDI T,MFARG2-MFARG1
	CALL GCM	;MARK MACRO ARG 2
	SKIPE T,MFLINK-MFARG2(T)
	 JRST GCC2

Probably an easier solution is to have FLSFRM do SETZM MFCPTR+1(A), so
that the (now dead) frame doesn't point to the string at all.