  Control flow compilation is a hybrid between classical WAM compilation and
meta-call, limited to the compilation of non-recursive clause bodies. This
approach is used successfully for the execution of dynamically generated
queries in an inductive logic programming setting (ILP). Control flow
compilation reduces compilation times up to an order of magnitude, without
slowing down execution. A lazy variant of control flow compilation is also
presented. By compiling code by need, it removes the overhead of compiling
unreached code (a frequent phenomenon in practical ILP settings), and thus
reduces the size of the compiled code. Both dynamic compilation approaches have
been implemented and were combined with query packs, an efficient ILP execution
mechanism. It turns out that locality of data and code is important for
performance. The experiments reported in the paper show that lazy control flow
compilation is superior in both artificial and real life settings.
