Refer to the SB-Prolog General Public License for full details. Among other things, the copyright notice and this notice must be preserved on all copies. This file contains Prolog predicates that compiles a clause into a buffer. Where is 0 if the buffer is to be allocated from the permanent area, and 2 if from a superbuff, which is in Supbuff. It is given a list of Source,Target pairs.
Target is always a register number.
The registers can overlap in any way. This is a kludge to fix up a problem with the depth-first traversal of arguments interacting in a bad way with the flattening of terms. To make things work, though much less efficiently than before, I'm just going through an explicit flattening stage beforehand. I don't doubt there are more elegant solutions, I'm just a user who wants to use assert to do other things.