consumer object の本体は、中断構造(
ページ、第2.4.5章参照)の中に、その変数に suspend
しているゴールに混ざって並んでいる。つまり、 consumer object は
フックされた変数の顔をしている。この変数に対する active unification
が起き、中断構造(
ページ、第2.4.5章参照)
中のゴールがエンキューされていく中で、 consumer object
に対して active unify メソッドが発行される。
この局面、及びGC局面以外の局面では、 consumer object は hook したゴールと
類似の扱いを実行時カーネルから受ける。
この構造については第2.4.5章 (
ページ)でさらに詳細に説明するが、ここであげた
中断構造(
ページ、第2.4.5章参照)は、中断原因である
未定義変数より特殊な構造(susprec)を経由して
指されている。この「中断原因の変数セル」とsusprecとは互いに参照しあう
「二重ループ構造」になっている。
Consumer objectのメソッド表の構造は、include/klic/g_methtab.h にて consumer_object_method_table として定義されている。