"VERSION 1.4" "This version written by CLR 2/85 based entirely on SAMs previous version. The differences are: a) Bit masks used instead of lists of names for efficiency. b) Attempt to flush dead SETs. There are two interesting structures: 1) Each temp atom's value is a uvector of fixes. The first element is its number (starting at 0) and increasing so each temp has a number. The rest of the elements are essentially constitute a string of 1 bit bytes big enough for the total number of temps. The bit being on indicates a temp that can't be merged with this one. 2) The lists of live variables associated with branches is also the same kind of bit string." > > "NAME-UV is a vector of temp names. It is used to get from a number back to the name of a temp. NOTE: temp values start at 0 so 1 always must be added to index into this vector." (UVSIZE) FIX> L-INS L-LEVEL FIX L-ASSIGN ]>>> B-LIVES UVECTOR B-FALL-DEADS UVECTOR B-JUMP-DEADS > #WORD *5344307564* >> >)> #WORD *36474037523* + PHRASE9> PHRASE9 > CODELEN17 = TEMP20 (TYPE VECTOR)> MAP27 - PHRASE38> PHRASE38 MAPAP30 + PHRASE42> PHRASE42 + PHRASE49> PHRASE49 + PHRASE56> PHRASE56 AGAIN61 + PHRASE63> PHRASE63 > MAP73 MAPAP76 + EXIT59> EXIT59 + PHRASE88> PHRASE88 + PHRASE95> PHRASE95 - PHRASE102> + PHRASE104> PHRASE104 PHRASE102 + PHRASE111> PHRASE111 MAP120 MAPAP123 + PHRASE132> PHRASE132 + PHRASE139> PHRASE139 "ADD-LIST ORs a bit into a uvector. In the old world it addes an atom to a LIST." #WORD *22604624125* ATOM UVECTOR) ATM4 L5> "ADD-LIST? same as ADD-LIST except returns #FALSE () if already there." #WORD *27662423234* > ATOM UVECTOR) ATM4 L5> > TAG14 "REM-LIST kill a bit in the uvector same way as ADD-LIST." #WORD *16330774246* ATOM UVECTOR) ATM4 L5> "REM-LIST? return false if not there, else remove it and return true" #WORD *34635620141* > ATOM UVECTOR) ATM4 L5> > TAG14 "IN-LIST? see if bit is on" #WORD *12674527301* UVECTOR> ATOM UVECTOR) ATM4 L5> > PHRASE11 #WORD *20721451071* ) L14 L25> MAP7 TAG21 TAG20 TAG26 TAG27 PHRASE28 MAPAP10 #WORD *374124016* ) TEMP4> - PHRASE6> PHRASE6 - PHRASE8> PHRASE8 #WORD *22156410675* ) TEMP4> - PHRASE6> > PHRASE6 - PHRASE8> PHRASE8 #WORD *35645555661* - PHRASE6> PHRASE6 - PHRASE8> PHRASE8 #WORD *21236654621* AGAIN12 PHRASE14 - PHRASE20> PHRASE19 PHRASE20 #WORD *26301056613* AGAIN11 RESTL16 RESTL18 - PHRASE13> BOOL19 RESTL20 RESTL21 = L9> PHRASE13 #WORD *24247322124* VECTOR) CODE4> (TYPE FALSE)> (TYPE FALSE)> AGAIN17 - PHRASE19> + TAG21> TAG21 TAG22 > 4 = TEMP20> = INST12> (TYPE FALSE)> PHRASE25 PHRASE19 - PHRASE41> BOOL30 (TYPE FALSE)> > 4 = TEMP20> = TEMP20> PHRASE29 PHRASE33 PHRASE35 > 4 = TEMP20> = INST12> PHRASE36 BOOL39 = INST12> PHRASE38 = INST12> PHRASE40 = TEMP20> PHRASE41 EXIT9 #WORD *23265023057* ) NTEMPS4 ALL-VARS5> NTEMPS4 = UV-OF-NAMES7 (TYPE VECTOR)> MAP11 MAP22 UVSIZE6 = UV33> ISTR38 ISTRE39 + TAG40> TAG40 TAG41 MAPAP25 MAPAP14 #WORD *35756775017* > 5 = STACK> >> >)> #WORD *34527545545* ) CODE4 START5 END6 RETURN-LABEL7 ACT-LABELS8> (TYPE FALSE)> AGAIN19 - PHRASE21> - PHRASE23> PHRASE23 PHRASE21 - PHRASE201> - PHRASE32> - BOOL34> BOOL35 BOOL38 BOOL34 TEMP25 = OP13> ISTR42 ISTRE43 OP13 = TEMP25> ISTR44 ISTRE45 > 5 = TEMP25> = TEMP25> PHRASE32 PHRASE30 TEMP25 = OP13> ISTR52 ISTRE53 OP13 = TEMP25> ISTR54 ISTRE55 > 5 = TEMP25> = TEMP25> + PHRASE57> + PHRASE57> PHRASE57 PHRASE50 BOOL62 TEMP25 = OP13> ISTR64 ISTRE65 OP13 = TEMP25> ISTR66 ISTRE67 > 5 = TEMP25> = TEMP25> PHRASE61 TEMP25 = OP13> ISTR71 ISTRE72 OP13 = TEMP25> ISTR73 ISTRE74 > 5 = TEMP25> = TEMP25> MAP78 MAPAP81 + PHRASE89> + PHRASE89> PHRASE89 + TAG93> - PHRASE92> TAG93 PHRASE92 PHRASE69 BOOL97 INST2-17 = TEMP25> ISTR101 ISTRE102 TEMP25 = INST2-17> ISTR103 ISTRE104 > 5 = INST2-17> = INST2-17> MAP106 MAPAP109 PHRASE96 TAG117 TAG118 - PHRASE201> TEMP25 = INST2-17> ISTR123 ISTRE124 INST2-17 = TEMP25> ISTR125 ISTRE126 > 5 = TEMP25> = TEMP25> + PHRASE129> + PHRASE129> PHRASE129 PHRASE116 TEMP25 = INST2-17> ISTR135 ISTRE136 INST2-17 = TEMP25> ISTR137 ISTRE138 > 5 = TEMP25> = TEMP25> = TEMP25> MAP140 + PHRASE151> + PHRASE151> PHRASE151 PHRASE153 PHRASE133 BOOL156 TEMP145 = TEMP25> ISTR160 ISTRE161 TEMP25 = TEMP145> ISTR162 ISTRE163 > 5 = TEMP145> = TEMP145> PHRASE158 (TYPE FALSE)> PHRASE166 PHRASE155 PHRASE170 = INST12> TAG175 - TAG176> TAG176 TAG173 (TYPE FALSE)> TAG174 PHRASE178 PHRASE172 = TEMP145> TAG184 - TAG185> TAG185 TAG182 TAG183 = TEMP145> TAG188 - TAG189> TAG189 TAG187 BOOL181 TEMP145 = TEMP25> ISTR191 ISTRE192 TEMP25 = TEMP145> ISTR193 ISTRE194 > 5 = TEMP145> = TEMP145> + PHRASE197> + PHRASE197> PHRASE197 PHRASE180 PHRASE201 #WORD *2620242350* - PHRASE10> PHRASE10 - PHRASE13> PHRASE13 #WORD *22733045530* ANY ANY) A4 B5> - PHRASE7> TAG13 - TAG15> TAG17 > TAG15 TAG14 > PHRASE7 - PHRASE19> TAG22 PHRASE19 - PHRASE23> TAG25 > PHRASE23 - PHRASE26> TAG28 > PHRASE26 PHRASE29 #WORD *3334712334* > #WORD *4566405411* #WORD *20617220034* >) CODE4 I5 MTUP6> AGAIN13 - AGAIN13> - AGAIN13> + PHRASE24> - PHRASE24> = TEMP26> MAP28 + PHRASE24> MAPAP31 PHRASE24 PHRASE20 PHRASE18 BOOL46 #WORD *26365527410* VECTOR LABEL FIX) CODE4 LABEL5 CUR-LEV6> (TYPE FALSE)> MAP8 + TAG23> (TYPE FALSE)> TAG23 TAG29 TAG26 IN19 = STACK (TYPE UVECTOR)> PHRASE22 MAPAP11 #WORD *6173456164* AGAIN14 - PHRASE16> PHRASE18 PHRASE22 MAP40 TAG56 TAG53 INST11 = TEMP54 (TYPE UVECTOR)> + MAPAP64> MAP61 PHRASE71 MAPAP64 MAPAP43 + PHRASE93> MAP79 PHRASE87 PHRASE16 - PHRASE90> PHRASE90 PHRASE93 #WORD *37274126165* MAP9 MAPAP12 MAP25 AGAIN42 PHRASE49 EXIT39 MAPAP28 #WORD *21430222465* - EXIT96> PHRASE14 - PHRASE25> PHRASE25 - EXIT96> PHRASE21 - PHRASE34> PHRASE34 - EXIT96> PHRASE30 = TEMP16> MAP41 - PHRASE54> PHRASE54 PHRASE39 = TWO8> MAP60 - PHRASE73> PHRASE73 MAPAP63 PHRASE58 - PHRASE79> PHRASE79 - EXIT96> PHRASE77 = ITEM7> TAG88 - TAG89> TAG89 TAG86 (TYPE FALSE)> TAG87 PHRASE93 = TEMP16> AGAIN99 BOOL104 PHRASE103 - PHRASE105> PHRASE105 - PHRASE107> TAG110 TAG111 - PHRASE107> PHRASE107 EXIT96 #WORD *35124011560* + PHRASE9> PHRASE9 #WORD *6164522112* + TAG13> - PHRASE12> TAG13 PHRASE12 MAP19 AGAIN38 PHRASE46 + TAG52> - PHRASE51> TAG52 PHRASE51 = STACK> PHRASE57 EXIT34 MAPAP22 #WORD *10346724531* AGAIN13 - PHRASE15> TAG20 TAG21 - PHRASE15> - PHRASE15> = STACK> PHRASE15 PHRASE25 #WORD *16262725736* AGAIN13 - EXIT19> BOOL17 = TEMP18> AGAIN22 PHRASE26 PHRASE30 EXIT19 EXIT7 #WORD *34056546705* AGAIN17 PHRASE19 + EXIT12> - PHRASE28> PHRASE28 + PHRASE30> PHRASE30 = STACK> PHRASE21 EXIT12 #WORD *35470007174* AGAIN12 - PHRASE17> BOOL18 = STACK> PHRASE17 PHRASE22 #WORD *14346247067* VECTOR LIST) CODE4 TEMPS5> > TAG15 AGAIN20 BOOL23 PHRASE22 AGAIN29 + PHRASE34> - PHRASE40> PHRASE40 + PHRASE42> PHRASE42 = STACK> PHRASE34 EXIT24 #WORD *34257730463* ) TEMP14 TEMP25> > TAG8 - TAG14> - TAG14> > TAG14 = STACK> TAG16 > #WORD *27737633426* AGAIN12 - PHRASE17> BOOL18 = STACK> PHRASE17 PHRASE22 #WORD *1434157567* VECTOR LIST) CODE4 TEMPS5> > TAG15 AGAIN20 BOOL23 PHRASE22 AGAIN29 + PHRASE34> + PHRASE48> - PHRASE47> PHRASE47 - PHRASE48> PHRASE48 - PHRASE50> PHRASE50 + PHRASE52> PHRASE52 = STACK> PHRASE34 EXIT24 #WORD *36615533324* ) TEMP14 TEMP25> - TAG9> - TAG9> > TAG9 = STACK> TAG11 > #WORD *23074423643* > VECTOR ATOM ATOM) CODE4 NEW-TEMP5 OLD-TEMP6> (TYPE FALSE)> MAP8 - PHRASE23> PHRASE25 PHRASE23 - PHRASE30> + MAPAP37> MAP34 PHRASE45 MAPAP37 PHRASE30 + TAG50> (TYPE FALSE)> TAG50 (TYPE FALSE)> TAG52 (TYPE FALSE)> = LL43> MAP56 PHRASE54 TAG69 (TYPE FALSE)> TAG68 = STACK> PHRASE65 = STACK> (TYPE FALSE)> = LL43> MAP74 + TAG88> (TYPE FALSE)> TAG88 TAG94 TAG91 (TYPE FALSE)> TAG90 (TYPE FALSE)> TAG96 (TYPE FALSE)> TAG97 PHRASE86 PHRASE71 = STACK> PHRASE98 MAPAP11 #WORD *30364410741* ATOM ATOM) L4 NEW-ATOM5 OLD-ATOM6> = TEMP13> MAP8 PHRASE21 MAPAP11 #WORD *3373420202* VECTOR LABEL) CODE4 LABEL5> (TYPE FALSE)> MAP7 + TAG22> (TYPE FALSE)> TAG22 TAG28 TAG25 IN18 = STACK (TYPE UVECTOR)> PHRASE21 MAPAP10 #WORD *13113107673* AGAIN14 - PHRASE16> PHRASE18 PHRASE24 MAP28 TAG43 TAG40 INST11 = TEMP41 (TYPE UVECTOR)> + MAPAP51> MAP48 PHRASE58 MAPAP51 MAPAP31 + PHRASE80> MAP65 PHRASE73 PHRASE16 - PHRASE75> TAG77 > TAG78 PHRASE75 PHRASE80 #WORD *14154013341* TEMP10 = ND18> ISTR11 ISTRE12 MAP14 PHRASE31 MAPAP17 + PHRASE34> PHRASE34 + PHRASE37> PHRASE37 #WORD *7526172214* TEMP7 = U36 (TYPE UVECTOR)> MAP9 MAPAP12 #WORD *21010732633* = SETTER6> - PHRASE15> = OP7> PHRASE15 + TAG20 (DEAD-JUMP TEMP17)> - PHRASE19 (DEAD-JUMP INST4 SETTER6)> TAG20 = STACK> PHRASE19 PHRASE12 = SETTER6> - PHRASE25> = OP7> PHRASE25 + TAG30 (DEAD-JUMP TEMP17)> - PHRASE29> TAG30 = STACK> PHRASE29 + TAG35 (DEAD-JUMP OP7)> - PHRASE34 (DEAD-JUMP INST4 SETTER6)> TAG35 = STACK> PHRASE34 PHRASE23 = SETTER6> - PHRASE41> = OP7> PHRASE41 + TAG46 (DEAD-JUMP TEMP17)> - PHRASE45> TAG46 = STACK> PHRASE45 + TAG51 (DEAD-JUMP OP7)> - PHRASE49 (DEAD-JUMP INST4 SETTER6)> TAG51 = STACK> PHRASE49 PHRASE39 = TEMP37> MAP57 - PHRASE69 (DEAD-JUMP OP7)> PHRASE69 PHRASE55 = OP7> MAP74 - PHRASE86 (DEAD-JUMP SETTER6)> PHRASE86 MAPAP77 PHRASE72 + TAG92 (DEAD-JUMP OP7)> - PHRASE91> TAG92 = STACK> > PHRASE91 + TAG96 (DEAD-JUMP OP7)> - PHRASE95 (DEAD-JUMP INST4)> TAG96 = STACK> > PHRASE95 PHRASE89 = TEM8> TAG103 - TAG104 (DEAD-JUMP TEMP17)> TAG104 TAG101 (TYPE FALSE)> TAG102 = SETTER6> - PHRASE114 (DEAD-JUMP TEM8)> = TEMP17> PHRASE106 (TYPE FALSE)> PHRASE114 = TEMP37> AGAIN118 BOOL123 PHRASE122 + TAG125 (DEAD-JUMP TEMP17)> - PHRASE124 (DEAD-FALL TEMP17)> TAG125 PHRASE124 - PHRASE127 (DEAD-JUMP TEMP17)> TAG131 TAG132 - PHRASE127 (DEAD-JUMP TEMP17)> = STACK> PEEP138 PHRASE127 EXIT115 #WORD *34702374670* > > UVECTOR ) RINST4 L5 SETTER6> = ATM7> + PHRASE10> > TAG13 = TEMP8> PHRASE10 #WORD *2411323553* LIST VECTOR) CODE4 VCODE5> (TYPE FALSE)> MAP8 - PHRASE26 (DEAD-FALL CODE4)> + PHRASE30 (DEAD-JUMP BJL24)> PHRASE30 PHRASE32 TAG36 TAG38 PHRASE34 TAG41 TAG43 PHRASE40 = TEMP37> PHRASE26 - PHRASE47> + BOOL50> BOOL51 + BOOL50> BOOL53 + BOOL50 (DEAD-FALL TMPL23)> BOOL54 = TMPL23> TAG58 - TAG59 (DEAD-JUMP TEMP37)> TAG59 (TYPE FALSE)> TAG57 - PHRASE68 (DEAD-JUMP CODE4 DEADS19)> BOOL50 BOOL62 RESTL63 RESTL64 = BJL24> PHRASE61 BOOL66 = BJL24> PHRASE65 > PHRASE67 PEEP82 PHRASE68 TAG74 TAG73 PHRASE47 - TAG78 (DEAD-JUMP CODE4 TEMP16)> - TAG78 (DEAD-JUMP CODE4 TEMP16)> (TYPE FALSE)> TAG78 PHRASE76 MAPAP11 #WORD *24714126344* ) OP5 TEMP18 TEMP16 TEMP20 RINST21 ONE22 TEMP30> = TEMP20> MAP10 PHRASE24 + PHRASE26> BOOL28 - PHRASE26> RESTL31 RESTL32 = TEMP30> PHRASE26 - PHRASE34> = ONE22> TAG36 TAG37 PHRASE34 - PHRASE46> TAG41 TAG42 - PHRASE46> = RINST21> TAG44 TAG45 PHRASE46 MAPAP13 PHRASE8 #WORD *12141203264* MAP8 AGAIN27 PHRASE35 EXIT23 MAPAP11