]>]> (RESTERS NTHERS PUTTERS) VECTOR (STYPES) > )) ) (ELSE ;"Fool REG? into not losing.")>> ) REG RAC (FLS <==? .W FLUSHED>) (B2 .BR) (ELSE )>) (SDIR .DI) (B3 <>) B4 F1 F2 F3 (SBR ) TT) #DECL ((N) NODE (NUM) FIX (RAC) AC (K) ) > ,QUOTE-CODE> <2 .K>) (ELSE <1 .K>)>>>> >> ) (ELSE DONT-CARE)>>> >>> >> > ) (ELSE .DI)>> >> > > > > <==? .SBR G?>> >)> > > `JUMPE ) (ELSE `JUMPN )> .B2) (.F3 .B2) (> >>) (ELSE .B2)>>> > 0> > )> FIX> 0>> >>) (.FLG ) (ELSE )> > ()>>>) (ELSE <+ .NUM 1>) (ELSE .NUM)>>> >> >> >>) (ELSE .B2)>>> ()>> > >) (ELSE .B2>>)> )>)> > ) ( .W>> .W)>> >) T1 T2 STR (ITYP ) (TYP ) RAC REG (NEGOK <>) (*2OK <>) (HWOK <>) (SWOK <>) TR TRIN TROUT (MUNG <>)) #DECL ((STRN NOD) NODE (K) (STR REG) DATUM (RAC) AC (T1 T2) ATOM (TRIN TROUT) (TRANSFORM) TRANS) <==? <1 >>> > >>>>> <==? .TYP TUPLE>> > > <==? 2 <5 .TRIN>>> <==? 2 <4 .TRIN>> <==? <5 .TRIN> -2> >>>> >> >>>)> > >>> .REG> .REG> > >> >>> ()>> > 0>>) (<==? TEMPLATE> .STR .RAC> ) ( ) (.HWOK !>>) (ELSE !>> )> -2> )>) (ELSE >>) (ELSE !>>)> )> <==? .TYP STORAGE> > 2) (ELSE <5 .TRIN>)>>) (ELSE !>>)> -1>> )>> ) (ELSE )>) (ELSE !>> )> > > ) (BRANCH <>) (DIR <>) "AUX" (STRN <1 >) RAC STR (ITYP ) (SDIR .DIR) (TYP ) (FLS <==? .WHERE FLUSHED>) (B2 .BRANCH) (ELSE )>) (TEMP? <==? TEMPLATE>)) #DECL ((STR) DATUM (STRN NOD) NODE (RAC) AC (B2) ATOM (BRANCH) ) > AC> ,ACPROT T> .STR >>> AC> ,ACPROT <>> > )>) (> FIX> 0>> >>) (ELSE >)> >> > ) (ELSE .DIR)>> > AC> > > .TEMP?> .B2>>) (ELSE .B2>>)>) ( AC> <==? .TYP BYTES>>> > -1>> ) (ELSE !>> ) ( <==? .TYP BYTES>> >> .B2>>) (ELSE !>> )>)> ) ( .WHERE>> .WHERE)>> ) (TYP >) (TPS ) (2ARG <2 .K>) (1ARG <1 .K>) (NRP ) (NUMKN <==? ,QUOTE-CODE>) (NUM ) (ELSE 0)>) (NR >) W TEM) #DECL ((NOD) NODE (K) (TPS) ATOM (NUM) FIX) > .WHERE>>) ()) #DECL ((COMMON-SUB) >) UVECTOR>>> .NOD .WHERE .TYP .TPS .NUMKN .NUM <1 .K> .2ARG T <> .NR>> >)> .W> ) N SAC STR (MP ) NUMN (ONO .NO-KILL) (NO-KILL .ONO) (LCAREFUL .CAREFUL) (W2 >) (ELSE .TPS)> .WHERE>)>)) #DECL ((NOD NUMNOD STRNOD) NODE (STR NUMN) DATUM (ML N MP NUM) FIX (SAC) AC (NUMNK R? RV) (NR) > (WHERE W2) (NO-KILL) ) > >) (<0? .NUM> > <0? .ML>> .R?>)> >> .STR>)>) (ELSE >> > .STR> [
>) .N>]>> ) (ELSE )> >)>) (ELSE >> >) (ELSE > >>)> > ,ACPROT T> 0>) (ELSE 0>)>>> |CERR1 >>> 1>>> ()>> !>> .NUMN> > AC> ,ACLINK (.NUMN !>)>)> > .ML>>> >)> > .STR> >)>)> > ) PN (SAME? <>) "AUX" (ONO .NO-KILL) (NO-KILL .ONO) (RR .PN .NUMNOD> .PN .STRNOD>>) VN (NNUMKN .NUMKN) (NUMK <>) (NCAREFUL .CAREFUL) (FLAC <>) STR SAC SAC1 (TYP1 ) (ELSE LIST)>) NUMN NAC (T1 ) (T2 ) NTHCASE TEM (ONE-OR-TWO-HRRZS <>) (PSTR <>) HI LO (REDEF <>)) #DECL ((PN NOD STRNOD NUMNOD) NODE (STR NUMN VN) DATUM (T1 T2 TYP1 TPS) ATOM (SAC SAC1 NAC) AC (NUM NTHCASE) FIX (NO-KILL) (R? RR RV NUMK NUMKN NNUMKN) (WHERE) (PAC) (PSTR) (HI LO) FIX (NR) >) > FIX>> ) (>> FIX>>> ) (<1? > FIX>> )>)> >> > >> ) (ELSE )> > ) (ELSE )> > >> >)>)> >> 2) (ELSE 0)> ) (ELSE )> >>> 1) (ELSE 0)> > ) (ELSE )>> 1) (ELSE 0)> > )> >>> 0) (ELSE 1)> 8) ( >> 0) ( >> 2) ( >> 4) (ELSE 6)>>> > >> )> > ) (ELSE ALL)>> ) (ELSE ALL)>>>>>>> ) (ELSE )>>> )> >>> ) (ELSE )>>>) (ELSE ) (ELSE )>>> >>>)> > )> AC>> > .REDEF>> >>> ,ACPROT T> ()>>>) (ELSE >)> > >>>>) ( >)> .ONE-OR-TWO-HRRZS <==? .SAC>>> FIX> 0>> >> >) ( ) (ELSE )> > ,ACPROT <>>> > >> > ) .T1) (ELSE .T2)>>) ( T) (ELSE ) (<==? .ITM IA11> ()) (<==? .ITM A1> ) (<==? .ITM A2> ) (<==? .ITM IA1> ()) (<==? .ITM IA2> ()) (<==? .ITM T1> .T1) (<==? .ITM T2> .T2) (ELSE .ITM)>> .APAT>>)>> >> > > > )> LIST 0>) (.PAC > ) (ELSE ALL)>> ) (ELSE ALL)>>>>>>> ) (ELSE )>>> )> >) (ELSE >)> 1 ()>> AC>> ()>>) ( ) (ELSE ALL)>>>>>> AC>> ()>>)> AC>> 1 ()>> ,ACPROT <>>) ( LIST>> )> > ) -1>> ) (ELSE |CERR2 >>)>> ) (BRANCH <>) (DIR <>) "AUX" (K ) W2 B2 (SDIR .DIR) (TYP >) (TPS ) W (2ARG <2 .K>) (NUMKN <==? ,QUOTE-CODE>) (NUM OFFSET> >) (ELSE )>) (ELSE 1)>) (COD UVECTOR>>) FLS (NR >) (TEM <>) (1ARG <1 .K>) (NRP ) NDAT (DONE <>)) #DECL ((NOD) NODE (K) (TPS) ATOM (NUM COD) FIX (NDAT) DATUM) )> >> >) (ELSE )> > .W>> ) (> >> )> )) #DECL ((COMMON-SUB) >>) > .NOD .WHERE .TYP .TPS .NUMKN .NUM <1 .K> .2ARG .NOTF .BRANCH .DIR .NR>) (.BRANCH >> .NOD .W .TYP .TPS .NUMKN .NUM <1 .K> .2ARG .NR>>)> > <=? .W .WHERE>>>>> >> >)> .W .DIR > ) (ELSE .W)> .WHERE>> )> .W2) ( .NOD .WHERE .TYP .TPS .NUMKN .NUM <1 .K> .2ARG .NR>) (ELSE .W)>> > )> .W> ) (RV <==? INTH>) STR (TYPR >)) #DECL ((NOD STRNOD NUMNOD) NODE (NUM MP) FIX (STR) DATUM (WHERE) (TYPR RV NUMKN) ) > ) ( >>>> .RV .NR>> .MP> -2 .MP> .STR .TPS>>) (ELSE .STRNOD .NUMNOD <> .RV .NR>> 2> .STR .TPS>>)> .STRN> .WHERE>> >)) #DECL ((NOD STRNOD NUMNOD) NODE (NUM COD) FIX (STR) DATUM (SAC) AC (WHERE) (ITYP) ) .STRNOD .NUMNOD <> <==? INTH> .NR>> > > .STRN> .WHERE>> ) "AUX" STRD VD ND SACT SSAC SAC (ML ) (BSYZ ) NWDS NCHRS (ONO .NO-KILL) (NO-KILL .ONO) TEM (LCAREFUL .CAREFUL) (OT CHARACTER) (ELSE FIX)>) (RR .VN .NUMN> .VN .STRN>>) (STAY-MEM ,LVAL-CODE> >>> <==? > ,SET-CODE> <==? >>>) (W2 > ) (> ) (ELSE DONT-CARE)>) (FLS <==? .W FLUSHED>) SSTRD) #DECL ((N NUMN STRN) NODE (STRD SSTRD ND VD) DATUM (NUM ML NWDS NCHRS) FIX (SACT SSAC SAC) AC (NO-KILL) (NR) > (VN) (BSYZ) ) >> )> .N>) (<0? .NUM> > <0? .ML>> >> >)> >> .STRD>)> >>>)> AC>> > .STRD> AC>> !>>) (ELSE >> AC>> `O>>)>)>) (ELSE > AC> AC>> >)> > >> )> ) (ELSE )>> > >>)> AC> >)>>) (ELSE >>)> |CERR2 >>) (ELSE > `O |CERR2 >>)> AC> > `O >>) (ELSE >>)>)>) ( .R?> > .STRD>)> >>) (> > .STRD> .NUM>>) (.R? > >>)> > >) ( AC> >)> .VN> > >> >> .SAC>> >) (ELSE )> > > > > )> > .NWDS>>) (ELSE > >>)>)> > 0> )> >>>) (ELSE > >) (<1? .NUM> AC> .SSTRD>)> >>) (ELSE AC> .SSTRD>)> > 0> )> >>>)>)> > AC>> >>) (ELSE )>)>) (ELSE > >> >) (> > >>) (ELSE >> >>)> AC> AC>> >)> > >> )> 0>) (ELSE 0>)>>> AC>> |CERR1 >>)> .ML>>>> >> AC> >)>>) (ELSE >>)> .ML>>> >)> AC>>> >>) (.R? .STRD> AC>> `O >>)>)> > > ,ACPROT T> <>> ,ACPROT <>> >>) (ELSE 1>>> <>> >)> .BSYZ>>) (ELSE .ND .STRD>>)> > > 1>>> ,ACPROT T> >> !>> > > .SSAC> .SAC .STAY-MEM>) (ELSE >)> AC>> !>>) (ELSE > AC>> >>)>)>)> )> .STRD) (ELSE )>> ) .STRN .NUMN <> <==? INTH> .NR>> CHARACTER) (ELSE FIX)> AC>> <>>) (ELSE >)>>> ,ACLINK (.RES !>)> .STRD>)> > !>> > (NR) >) .STRN .NUMN <> <> .NR .VN>> (SAC SACT) AC) > <>) (ELSE AC>> .ND> ) (ELSE >)>> ,ACPROT T> >> ,ACPROT <>> >) (ELSE 1>> <>>>)> > [>]>> > >> .NUM>>) (<==? .SAC >) (ELSE !>> >)> >> .SAC)>> 1>>)) #DECL ((SAC SAC1) AC (ST) DATUM) AC> >>> .ST> AC>> >> >) (.STAY-MEM !>>) (ELSE !>> .ST> )>)> '.HERE!-OP!-PACKAGE 3>> >> '.HERE!-OP!-PACKAGE -1>> .ST> > ,TEMPLATE-NTH> ,STRING-NTH ,STRING-NTH ,VEC-NTH ,VEC-NTH ,VEC-NTH ,VEC-NTH ,LIST-NTH]> ) "AUX" (K ) (TYP >) (TPS ) (2ARG <2 .K>) (NUMKN <==? ,QUOTE-CODE>) (NUM OFFSET> >) (ELSE )>) (ELSE 1)>) (NR >) TEM W (1ARG <1 .K>) (NRP >) PUT-COMMON-DAT) #DECL ((NOD) NODE (K) (NUM) FIX (PUT-COMMON-DAT) (W) DATUM) )> > >>> .1ARG .TPS .SAME?>> > ) (ELSE )) #DECL ((COMMON-SUB) >) UVECTOR>>> .NOD .WHERE .TYP .TPS .NUMKN .NUM <1 .K> .2ARG <3 .K> .NR .SAME?>> > TEMPLATE> AC> .PUT-COMMON-DAT>> AC> .PUT-COMMON-DAT>> >)> TEMPLATE> AC> .PUT-COMMON-DAT>> AC> .PUT-COMMON-DAT>> >)> .W> .NNOD .SNOD>>) (RR .VNOD .SNOD> .VNOD .NNOD>>) (MP ) (NN 0) NAC SAC STR NUMN TEM (CFLG 0)) #DECL ((N SNOD NNOD VNOD) NODE (NUM NN MP CFLG) FIX (SAC NAC) AC (NUMN STR VN) DATUM (NO-KILL) (NR) >) > ) ( > <1? >> > >> <>>>) (ELSE >> <>>> >>>)> ) (ELSE )> ) (ELSE > >>>> ) (ELSE >> >>> >>> )> [ .MP>> (.NN)>]>> > ) (ELSE )> >> []>>> )>) (ELSE > )> >> >> > >) (ELSE >> >>>>)> )> > 0>>> |CERR1 >>> 1>>> ()>> >> >>> > .NUMN> > AC> > ,ACLINK (.NUMN !)>)>) (ELSE )> >>>)> ) (ELSE >)> )>> .SNOD .NNOD <> <> .NR T .VNOD .SAME?>> ,TEMPLATE-PUT> ,STRING-PUT ,STRING-PUT ,VEC-PUT ,VEC-PUT ,VEC-PUT ,VEC-PUT ,LIST-PUT]> >) (VTYP ) TT TEM) #DECL ((N) DATUM (O RN TY) FIX (N2) DATUM (VNOD) NODE) .TY> -2 .TY>> >> > >> >> ) (> ,ACO T> >> ) (ELSE >> ,ACPROT T> !>> ,ACO T> )>> >)> >>) (ELSE >>)>) (ELSE > > >) (ELSE > .TEM>)>>)>> <==? .TY STORAGE>> 1) (ELSE 2)>> ) PITEM) #DECL ((NOD) NODE (K) (PITEM PINDIC) DATUM (STK) ) >> >> DONT-CARE>>> >> >> ,PUT> |CIPUT) (ELSE |CIPUTP)>>> .WHERE>> ) PINDIC PITEM) #DECL ((NOD) NODE (K) (PINDIC PITEM) DATUM) >> >> >> >> > .WHERE>> ) (FLG T) N CD (ONO .NO-KILL) (NO-KILL .ONO) (2RET <>)) #DECL ((NOD N) NODE (K) (ST1 ST2) DATUM (NO-KILL) (ONO) LIST) ,REST> > > )> ;"Really > ,QUOTE-CODE> <==? > ()>> >>) (>> >> > ,SNODES>> >> ,LVAL-CODE> >> 2> <2 .CD>) (ELSE T)> > ) > >> .NO-KILL>> ) !.NO-KILL)>> .WHERE>) (ELSE )>>> )>>> ) (ELSE .2RET> DONT-CARE) (ELSE .WHERE)>>>> >>)> >>> AC> > |CERR2 >>) (ELSE >> )>> > AC> >> AC>> ( AC>>)>>) (ELSE AC>> `@ !>>)> >) (ELSE AC>>)>>) (ELSE >>)>)> .WHERE>> ,QUOTE-CODE> >> ,QUOTE-CODE> >>> >> >> ,SNODES>> ,QUOTE-CODE> >>> >> >> ,SNODES>>>> >> 2> <2 .CD>) (ELSE T)> > ) > >> .L>>> ) !.L)>)> ) (ELSE .RV)>> >>> >>>>> FIX>>>> >>> 1 ()>> ) (ELSE 1 ()>>)>) (> FIX> 0> >> >> )>> >> >>>> >>> ()>> )>> > 1 ()>> ) (> >>>> )>> > 1 ()>>)> .STR> \ "ROUTINES TO DO COMMON SUBEXPRESSION HACKING IN SIMPLE CASES (CURRENTLY NTH REST)." "ROUTINE TO CREATE A COMMON" (OBJ) FIX) > "THIS ROUTINE BUILDS A CANONACAILZED COMMON. THIS ROUTINE CAN RETURN EITHER A COMMON OR A LIST OF COMMONS." (ITEM) FIX (CUR-COM) >) > <1 .CLIST>) (.CLIST)>>)> .ITEM .PTYP .DAT>> ) ( 1>> .CLIST>)> >>) ( > >>> > ( !.COMT)) (ELSE ( .COMT))>) ()>) (ELSE REST> ( <+ .ITEM > .PTYP .DAT>)) ()>)>> "ROUTINE TO FIND A COMMON GIVEN A NODE" ) (NUM <>)) #DECL ((NOD) NODE) > ) ()>> )>> .ACR>)>> ,ALLACS>>> "ROUTINE TO SEE IF A COMMON AND A NODE ARE EQUAL" (COM) ) ) ( >> >)>> "ROUTINE TO SEE IF THE CODES OF THE COMMONS ARE EQUAL" )) #DECL ((NODE) NODE (COM) COMMON) <==? NTH>> <==? REST>>>> "ROUTINE TO SEE IF THE NUMBERS OF A COMMON AND A NODE ARE EQUAL" >>)) #DECL ((NODE) NODE (COM) COMMON) <==? .NUM>> "ROUTINE TO SEE IF THE KIDS OF A COMMON AND A NODE ARE EQUAL" >)) #DECL ((NODE) NODE (COM) COMMON) ) (.KID)> >> "ROUTINE TO FLUSH COMMONS IF PUTS OR PUTRESTS COME ALONG IF TYP IS FALSE THEN KILL ALL COMMONS. OTHERWISE KILL THOSE COMMONS WHICH ARE TYE SAME TYPE AS TYP OR UNKNOWN." ) > >)>> ,ALLACS>> "FLUSH-COMMONS IS USED TO FLUSH ALL THE COMMONS FROM AN AC" (ACR) LIST) .PTYP> >> .FC>)>) ()>> ) (TOPACR .ACR)) )> .PTYP> >)> > >>> "FLUSH? SEES IF A COMMON SHOULD BE FLUSHED" <==? .PTYP>>>> "FLUSH-COMMON-SYMT IS USED TO FLUSH THE COMMONS ASSOCATED WITH A GIVEN SYMTAB" > .SYMT> ) () (SACR .ACR)) )> .SYMT> > )> > >>)>)>> <>) (ELSE .ACR)>>> ,ALLACS>> > .SYMT> >)>> "SEE IF NODE CONTAINS SYMTABS" )) #DECL ((NOD) NODE) ,LVAL-CODE> <==? ,SET-CODE>>> )>> "SEE IF THIS IS A NTH OR REST OR PUT CODE" )) #DECL ((NOD) NODE) <==? .COD ,REST-CODE> <==? .COD ,NTH-CODE>>> "SMASH A COMMON INTO AN DATUM" > AC> > )>>)> > AC> > )>>)> >> ) COM) #DECL ((W) DATUM) AC> .NUMKN> >) (.NRP )> > > .COM>) ()> )>)>> )>> >)>> )) #DECL ((NOD) NODE (K) ) > ,QUOTE-CODE> REST <- > FIX> 1>>>> .NAME> >> ) (ETYP ) (VTYP ) ODAT VDAT AC) #DECL ((VDAT ODAT NDAT) DATUM (TEM) COMMON (NOD) NODE (NUM) FIX (VAL OBJ) NODE) >> >> > AC>> )> > AC> )> ANY-AC) (FLUSHED)> ANY-AC>>>> ) (ELSE AC> ,ACPROT T> AC> ,ACPROT T>)> AC>> )> AC> ,ACPROT <>> AC> ,ACPROT <>>)> `HLLM ) (ELSE `MOVEM )> AC>> ( AC>>)>>)> AC>> AC>>>>) ( AC>> 1 ( AC>>)>>)>)> ,NO-DATUM> (NDAT) DATUM) > > .TPS> > .WHERE>)>> >> > AC> )>)> AC>> ,ACLINK (.DAT !)> .DAT>