"PEEPHOLE OPTIMIZER: IT WILL DO SEVERAL TYPES OF OPTIMIZATIONS ON THE CODE OUTPUT BY THE COMPILER. THIS INCLUDES REMOVING UNREACHABLE CODE REMOVE THE COPYING OF SIMILAR CODE AND OTHER MINOR OPTIMIZATIONS." )> TMP ATOM>> > FIX >> FIX >> "CODE RANGES" \ "PEEP STARTS BY BUILDING A CODE STRUCTURE WITH SKIPS AND JUMPS REPLACED BY THERE EXPANDED INS-TYPES AND WITH JUMPS AND THIER LABELS LINKED UP WITH THE USE OF LNODES." ) XD QD (SLABS ()) (TOPCOD .COD) TEMP) #DECL ((XCOD) LIST (SLABS MODLN) (LABNUM) (NLN LN) FIX (NUMLABS NNUMLABS) ) ) (> ATOM> <==? <1 .AT> INTERNAL-ENTRY!-OP!-PACKAGE> >> >> 1>> (>)> > >> > > ATOM> )> > ) ()>>) (>)>> > )) #DECL ((QD) (RCOD) TUPLE) > >> )>> >>) ( .XD] LNODE>> )>>>) (ELSE > >> >> )> )>)>> .COD> )) #DECL ((NLABLS) (REDO) >) ) (NNCOD .NCOD)) #DECL ((NNCOD NCOD) TUPLE) >>> )> > ,LO-JMP2>> )> > ATOM NULL>> >>>)>> >> >) (<==? .TMP .NC> ) ( ATOM NULL>> >)>>> ) ( > ,LO-JMP2>> ,LO-JMP2> >>>> >>> JUMP-INS>>>) (ELSE > ,JUMPS-LN .NEWLAB>)> ) ()>) ()>> > >) (>> NULL>) (> JUMP-INS> <==? > ,JRST1>> T> > T>>>) (ELSE >)>> 1>>>> >> ,JUMPS-LN >>> 1>>> )>) ( > >> ) (> SKIP-INS> > 2> SKIP-INS>>> <==? ,JRST1> <==? >> T 2>> 2> SKIP-INS>> >> 1 ,NULL-INST> >) (> )>>> > JUMP-INS> 2> SKIP-INS>> > > SKIP-INS> <> 2>> JUMP-INS> <==? .QXD> >) ( `ADDI > <==? <1 .INST> `SUBI >> <==? 3> <==? <3 .INST> 1> )> > > JUMP-INS> ,JRST1> ,LOW-JMP1> ,HI-JMP1> 5> <==? <2 .INST> <5 .QD>>>> 1 ,NULL-INST> ,JRST1> `ADDI > `AOJA ) (ELSE `SOJA )>) (<==? <1 .INST> `ADDI > <+ FIX> 16>> OPCODE!-OP!-PACKAGE>) (ELSE <+ FIX> 32>> OPCODE!-OP!-PACKAGE>)> <2 .INST> >> >>>>>> > >) ()>) () ()>>> > > > NULL>) ( > NULL> <==? > ,JRST1>>> >) (T)>> > > > `ADDI > `AOJA ) (ELSE `SOJA )>)) >> ,WHERE-JMP .QD>>> >)> ) ()>>) ( <==? <1 .INST> DEALLOCATE> >> FORM> <==? <1 .XD> DEALLOCATE>> !<2 .INST>)>)>> .COD> )) #DECL ((LN) LNODE) > > <==? > ,JRST1>> ) ()>> .COMPS>> !.COMPS>> > > <==? > ,JRST1>> ) ()>> .COMPS>> !>> .COMPS>)>> .MODLN> > )) #DECL ((NCOD) TUPLE) > <==? <1 .INST> `JRST > '.HERE!-OP!-PACKAGE>>>> )) ATOM NULL> ) (>)>) (>>>)>>> >> ) (> ATOM> INTERNAL-ENTRY!-OP!-PACKAGE> ATOM> > >>>>>> >> <==? .NCOD>> )>> .MODLN>> ) () (ELSE JUMP-INS> )> )>>)>> .COD> > 1>>) (PTR2 1>>) XD) #DECL ((PTR2 PTR1) TUPLE) .PTR1> )>> .NLABLS> > NULL>) ( > >) ( >> 1 .PTR2>)> >)> ) ( >)>>) (>)>> > .PTR2> )> .PTR1> > > > ,CODE-LN .PTR2> >)>> .NLABLS> > NULL>) (ELSE >) ()> > >) ( >> 1 .PTR2>)> >)> >> > ) (ELSE ) ( NULL>) (ELSE > > >)> >>> >)>> .PEEP> )>> \ ) > OPCODE!-OP!-PACKAGE> > FIX>> >>> > FIX>> <0? >>> > FIX>>>>> <> !) JUMP-INS>) (> FIX>>>> <==? .QY 4> !) SKIP-INS>) (.INST)>) ( > FIX>>>>> !>) SKIP-INS>) (.INST)>> .INST) ( <>) ( > )>> .INST>)>> > )>> .MD>> 504> > FIX>> OPCODE!-OP!-PACKAGE> !>> 2> (<1 .XD> >)) (ELSE (>))>>) ( 505> <* 2>> FIX>> OPCODE!-OP!-PACKAGE>) (ELSE 504> > FIX>> OPCODE!-OP!-PACKAGE>)> !>) (ELSE .X)>> ) (ELSE )> > .X>> > > )) #DECL ((XD) TUPLE (XR) ) ) (<==? .XR .TOPCOD>) (ELSE >> NULL>) ()>>)>> .COMPS> ) ()> > >)> > > >> >> )> ) ITEM) #DECL ((NPCOD) TUPLE (NNCOD) ) ) (> <=? .ITEM .QD>> JUMP-INS> )> T>> ) (ELSE > )>)> ) ()>)>> .COMPS> > )> ) ()>>> ,& .X> > "ROUTINE TO DETERMINE WHETHER AN INSTRUCTION CAN SKIP" >> `XCT > <==? <1 .INST> `PUSHJ > 2> >>>>> "ROUTINE TO DELETE A JUMP-LN FROM AN LNODE." )) #DECL ((JMP) JUMP-INS (COD) TUPLE (XD QD) ) LNODE>>>>> LNODE> ,JUMPS-LN >) (ELSE 1>> >)> T)>> 1>>) ( 1>>)>>> >>>> > >>> ) (NN 1) "AUX" XR) #DECL ((XX) TUPLE (NN) FIX) > NULL ATOM>) (<0? >> )> >> > >> > ) (NN 1) "AUX" XR) #DECL ((XX TOPCOD) TUPLE (NN) FIX) > .TOPCOD> > > NULL ATOM>) (<0? >> )>> > ) .AD) (ELSE 1>> .AD> .OB)>> )>> .INST>> ) <==? <1 .AT> PSEUDO!-OP!-PACKAGE> <==? 2> > FORM> <==? 3> <==? <1 .AT> SETG> <=? <3 .AT> '>> <2 .AT>>> .ATM) ( <>) (ELSE )) > >)>> .INST> .INST)>> > > >> > .LN>>>> ) (ELSE > >> > .LN>>>> )>> ) >> JUMP-INS> >> >>> ATOM> > <==? >> >> > >>> >)>> .MDLN> > )) #DECL ((JMP) JUMP-INS) >>> JUMP-INS> > ) ()>>> (NLABLS) (NNUMLABS) FIX) )) #DECL ((Y) (X) LNODE) > > > )) #DECL ((N1 N) (LL) ) > > .LL> >) (ELSE >)> )> >>> >) (ELSE > )> <1 >> 1 ,NULL-INST> >)> )> > .MODLN> .MODLN>