[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
GC not reclaiming impure strings held by macro frames
- To: Kent M Pitman <KMP@MIT-MC.ARPA>
- Subject: GC not reclaiming impure strings held by macro frames
- From: Mike McMahon <MMcM%SCRC-TENEX@MIT-ML.ARPA>
- Date: Sat, 10 Mar 1984 23:48:00 -0000
- Date: Mon, 12 Mar 84 22:33 EST
- Cc: BUG-TECO@MIT-MC.ARPA, BUG-EMACS@MIT-MC.ARPA, BUG-NEX@MIT-MC.ARPA
- In-reply-to: The message of 10 Mar 84 18:48-EST from Kent M Pitman <KMP at MIT-MC>
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.