FIX> *40* 770>> ) LONG> ;"Push the dope word" ) (T DOUBLE>)> ; "Push the value" > > LONG> ; "load the atom" LONG> ; "stuff it in the binding" ;"PUSH THE DECL" LONG> ;"PUSH THE PREVIOUS BINDING" LONG> ;"PUSH THE ATOM'S OLD BINDING" LONG> ;"PUSH BINDID" > >)> NORMAL> <> .FROB> > ) (T )> CONDITIONAL-BRANCH> ) .ATM> NORMAL> <> .ATM .VAL> NORMAL> ) HINT TYP) .AMT> NORMAL> ) HINT TYP) .UV> NORMAL> ) HINT TYP) .FROB> NORMAL> ) HINT TYP) .OLD .NEW> NORMAL> ) HINT TYP) .ZONE> NORMAL> ) HINT TYP) .OBJ> NORMAL> <> .OFFS .TBL> NORMAL> ) HINT) <> .STR> NORMAL> <> .ARG> NORMAL> (NEARG) ANY (RES) ) NORMAL> ) > >) (ELSE LONG>)> NORMAL> ) > >) (T LONG>)> NORMAL> (RES) ) > ) ( ) (ELSE >)> > > ;> ;> >)>)>) (> > LONG> >) ( > >) (ELSE >)> LONG>) (ELSE PREF-VAL>> > > > ) ( PREF-TYPE>> ) ( > TYPE> > ) (ELSE > > )>)>) (ELSE LONG> LONG>) (ELSE >> )>)>) (> ; "Some structured thing" >> >) ( > >) (T >)> LONG>) (T )>) (T LONG>) ( LONG>>) (T LONG>)> > LONG>) (T )>)> NORMAL> > ) "AUX" VAC ATMADDR TYP TAC ELABEL NLABEL ATMOFF) #DECL ((ATM) (RES) (HINT) ) >) (ELSE >)> >) () (T > 4>>>> ;>>)> > LONG> LONG> DOUBLE>) (ELSE > > > > >) (ELSE >)> ) ()>)>) ( > > ; "If atom is in AC, can win immediate" DOUBLE>) (T > >)>) (T > ; "Otherwise, pick up gbind through pointer on stack" > ; "Then get value out of that" DOUBLE>) (T >)>)> .VAC .RES T>)>) (> > > > > ; "Pick up gbind" > ; "Barf if not there" > ; "Pick up gval" >) (T >)> ; "Win if have gval" > > >) (T >)> .RES)> <>> > DOUBLE>) (T .TAC .RES T>)>) (T ) (T > > .TAC .RES T>)>)> NORMAL> ) (A2 <>) (TWOM <>) LV) #DECL ((ATM) ATOM (RES) ANY) >> > >) (T >)> >) ( >> >>>>> >>) (T > 4>>> ;>>)> )> )> > > >)> > > >) (ELSE DOUBLE>)>) ( .ATMADDR>) (T .ATMADDR>)> NORMAL> ) "AUX" VAC TAC CAC DCL LV) #DECL ((VAR) VARTBL (VAL) ANY (HINT) ) <>>> > > >> PREF-TYPE <> <>>> >)>) (ELSE PREF-TYPE <> <>>> >)>) ( FIX> > > > .TAC .VAR> >) (ELSE > > >> >)> NORMAL> >)> >)> ) ()> > > >) (ELSE >)>) (ELSE >)> <>> UNCONDITIONAL-BRANCH> ) RES) #DECL ((VAL) ANY (FRM) ) >)> > ,AC-1> ,AC-0>) (ELSE )> >) (> >)> <>> UNCONDITIONAL-BRANCH> )) #DECL ((CT) FIX (LABELS) (BASE) ) >> > ,ALL-ACS> > >> .LABELS> CONDITIONAL-BRANCH> (LABELS) ) ) (ELSE <- 1>)>>> >> .LABELS> NORMAL> ) (ARGS ,ARGLIST-VARS) LNOARG TVAR) > > 0> > )) ) ( <=? .RES .TEMP> > <==? <1 .RES> <1 .TEMP>>) ( > <==? <1 .RES> .TEMP>) ( > <==? .RES <1 .TEMP>>)>> ) ()>> .TEMPS> > > > ,AC-1> > > > >)> WORD> WORD> LONG> LONG> > DOUBLE>> .ARGS> WORD> WORD> LONG> > 8>> >> > > NORMAL> > )> ) "AUX" VADDR TADDR TLAB) #DECL ((LABEL) ATOM (RES) ) > > >)> > <>> > 0 <> T> DOUBLE>) ( .TADDR>)> > NORMAL> "Args are: LOCAL variable being set; FRAME where new val is coming from; variable in that frame for new value." ) "AUX" TAC FAC (SADDR ) (TYP <>) REFNUM) #DECL ((NLVAR) VARTBL (LVAR) ) ; "If we don't call GEN-LOC, this frob may never get a stack slot" >> > )> ; "Don't leave the old guy around in ACs" PREF-VAL>>> ; "Handle case of pushing non-local value (code hacked in ILDB-LOOKAHEAD pass)" DOUBLE>) (>> > ; "Don't clobber frame AC; these guys run in sets" > > ) (ELSE > > .TAC .LVAR>)> NORMAL> "Args are: FRAME where new value is going; variable in that frame; value for variable (often local var, often not)" ) "AUX" FAC (SADDR ) REFNUM TAC CADDR (TYP <>) LV T1 T2) #DECL ((NLVAR FVAR) VARTBL (SADDR) FIX) PREF-VAL>>> >> >) (>)> >> > > <==? .T1 >> >> ) (ELSE )> >) (.TYP >> > > >>) (> >>) ()>)>) (ELSE > >>)>) (ELSE >)> NORMAL> <>> NORMAL> ) >> ) > > >) ( >)> > > > LONG> > NORMAL> <> .VAR> NORMAL> '["PURVEC" "DBVEC"]> >> >) (T >)>) ( '["BIND" "BINDID"]> "BIND"> LONG> LONG>) (T LONG> LONG>)>) (T > >) (T >)> "BIND"> LONG> ) (T LONG> )>)>) (T > >)> NORMAL> '["BIND" "BINDID"]> ) (T )> "BIND"> ) ()> LONG>) ( ["PURVEC" "DBVEC"]>> > <> .VAL >)> NORMAL> CASE-ENTRY>> > >> )>> ,CASE-ENTRY-TABLE>> ) >>)> .TYPARG> NORMAL> (RES) ) NORMAL> <> .TVAR .FVAR> UNCONDITIONAL-BRANCH> <> .TVAR> UNCONDITIONAL-BRANCH> <> .TVAR> UNCONDITIONAL-BRANCH> <>> NORMAL> (DEST) VARTBL) > ) > >) (T LONG>)> NORMAL> ) > >) (T LONG>)> NORMAL> )) > > > <>> >)> NORMAL> ) PREF-TYPE>> > ) > ) > ) > )) #DECL ((MODE BYTESZ) (NAME) (RES) ) NORMAL> ) <> .CH> NORMAL> ) <> .CH> NORMAL> )) #DECL ((CHN NUMARGS) (STR) VARTBL) > (STR) VARTBL) <> .CHN .STR .NUMARGS>> )) >> ) (PURZN <>) (RES <>)) #DECL ((CHN) ) .CHN .ATMZN .PURZN> NORMAL> )) #DECL ((CHN) ) .CHN> NORMAL> <>> NORMAL> <>> NORMAL> )) #DECL ((TYPEC NARGS NWORDS) (RES) ) NORMAL> ) ,AC-TP>) (> >> >>> >) (ELSE >>> >)> NORMAL> )) NORMAL> )) NORMAL> )) <> .STRUC .NUM .VAL> NORMAL> ) (HINT <>)) NORMAL> ) > ANY-AC>> > > > > > > > > NORMAL> ) (HINT <>)) #DECL ((FRM) VARTBL) > ) > NORMAL> )) WORD>) ( WORD>)> WORD>) ( WORD>)> LONG>) ( LONG>)>) (T > > >) (T LONG>)>) (> >> LONG>)>)> ) ()> > > ) ()> >)> ) ()> >>> )> NORMAL> )) > )) > <> .VAR> > UNCONDITIONAL-BRANCH <> T>)> <==? .DIR ->> >)>> )) > <> .VAR> > UNCONDITIONAL-BRANCH <> T>)> <==? .DIR ->> >)>> )) > ) (HINT <>)) > ; "return 0 if pointer is not to stack; 1 if to unused stack area; -1 if to actual stack" ) (LABEL ) TAC) #DECL ((OBJ) VARTBL) > > > ; "Below stack" > > ; "Above stack area" ; "Assume loser" > > ; "Above top of stack" > NORMAL>