STRE Prototype SGLB Misc/Class Reference CLAS 354327 ESBR SORD 2 FIFO list (youngest is last) LITO 1 state: 1=Starved, 2=Empty, 3=NotEmpty CMNT the FIFO list goes here LITO 20 FIFO length limit ESBR ESTR STRE SGLB Misc/Superclass Reference CLAS 354008 ESBR SGLB Utility/Input CMNT Expects: É ¥ inst/arglist/É CMNT The arglist is executed when it comes up PRIM Stack/Second to aux É/arglist ¥ inst/É LITO 2 É/arglist ¥ 2/inst/É PRIM S_tree/Get exact É/arglist ¥ list/2/inst/É PRIM List/Behead É/arglist ¥ state/list/2/inst/É STRE state search tree SORD 0 Empty or NotEmpty PRIM Stack/Drop É/arglist ¥ list/2/inst/É LCAL loop É/junk ¥ list/2/inst/É LITO 3 É/junk ¥ state/list/2/inst/É PRIM Stack/Drop from aux É ¥ state/list/2/inst/É PRIM List/Splice É ¥ list/2/inst/É PRIM S_tree/Put É ¥ inst/É PRIM Heap/Store self ESBR SORD 1 Starved LITO 2 É/arglist ¥ state/list/2/inst/É LCAL Cleanup ESBR ESTR ESBR SGLB Utility/Ready CMNT Expects: É ¥ inst/É LITO 2 É ¥ 2/inst/É PRIM S_tree/Get exact É ¥ list/2/inst/É PRIM List/Behead É ¥ state/list/2/inst/É STRE state search tree CMNT Note that receiving a Ready message while in the starved state is an error SORD 2 Empty LITO 1 É ¥ state/list/2/inst/É PRIM List/Splice É ¥ list/2/inst/É PRIM S_tree/Put É ¥ inst/É PRIM Heap/Store self ESBR SORD 3 NotEmpty PRIM List/Behead É ¥ arglist/list/2/inst/É PRIM Stack/Pop to aux É/arglist ¥ list/2/inst/É PRIM List/Test for leaf É/arglist ¥ rslt/list/2/inst/É BRFL branch if not a leaf LITO 3 É/arglist ¥ state/list/2/inst/É LCAL Cleanup BRTR LITO 2 É/arglist ¥ state/list/2/inst/É LCAL Cleanup ESBR ESTR ESBR ESTR LDEF loop CMNT Grafts the arglist on the list CMNT input: É/arglist ¥ list/É CMNT Output: É/junk ¥ new_list/É PRIM List/Test for leaf É/item ¥ rslt/list/É BRFL branch if not a leaf PRIM List/Remove É/item ¥ list/head/É LCAL loop É/limit ¥ new_list/head/É PRIM Stack/Push from aux É ¥ limit/new_list/head/É PRIM Stack/Duplicate É ¥ limit/limit/new_list/head/É BRFL branch if limit reached PRIM Stack/Pop to aux É/limit ¥ new_list/head/É PRIM Stack/Xdrop É/limit ¥ new_list/É BRTR PRIM Ordinal/Decrement É ¥ limit'/new_list/head/É PRIM Stack/Pop to aux É/limit' ¥ new_list/head/É PRIM List/Add É/limit' ¥ new_list/É BRTR LITO 1 É/item ¥ 1/list/É PRIM List/Read É/item ¥ limit/list/É PRIM Stack/Push from aux É ¥ item/limit/list/É PRIM Stack/Second to aux É/limit ¥ item/list/É PRIM List/Splice É/limit ¥ list/É EDEF LDEF Cleanup CMNT Stores the list away and executes the arglist CMNT Input: É/arglist ¥ state/list/2/inst/É CMNT Output: É ¥ É PRIM List/Splice É/arglist ¥ list/2/inst/É PRIM S_tree/Put É/arglist ¥ inst/É PRIM Stack/Push from aux É ¥ arglist/inst/É PRIM List/List to stack PRIM Misc/Execute PRIM Heap/Store self É ¥ É EDEF