  B-Prolog is a high-performance implementation of the standard Prolog language
with several extensions including matching clauses, action rules for event
handling, finite-domain constraint solving, arrays and hash tables, declarative
loop constructs, and tabling. The B-Prolog system is based on the TOAM
architecture which differs from the WAM mainly in that (1) arguments are passed
old-fashionedly through the stack, (2) only one frame is used for each
predicate call, and (3) instructions are provided for encoding matching trees.
The most recent architecture, called TOAM Jr., departs further from the WAM in
that it employs no registers for arguments or temporary variables, and provides
variable-size instructions for encoding predicate calls. This paper gives an
overview of the language features and a detailed description of the TOAM Jr.
architecture, including architectural support for action rules and tabling.
