- ...
CONSは連続した2ワードの領域であり、CDRが下位ワードCARが上位ワードにある
- これは、一般的にCARよりCDRに
純粋未定義変数(
ページ、第2.1.3章参照)が割り付けられる可能性が高いこと、
KLICでは純粋未定義変数は自己参照の形式で表現される
ため、CDRを未定義参照にする処理に対してoffsetが加わらない方が高速な
実現が期待できることに依る。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
定義されている。
- 引数領域で
[6]とあるのは、
処理系デバッグの際に、GDBなどのCレベルのデバッガ、中身を見るときに
このgoalrec構造体を印字することにより6引数程度は印字される、ということ
のためである。よって、プログラム実行上は意味がない。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... 中断も失敗もしない)main/0では意味がない。
- KLICではこのような無駄なコードを生成する場合がある。
しかしながら、さらに、Cコンパイラでの最適化が行われ、
通常は除去されるため、最適化済コードの大きさには影響しないことが期待され、
実際、GCCでは大きさには関係がない。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ..._unify())。
- このような版の単一化器が存在する理由は、
特にジェネリックオブジェクトのメソッド起動については、このメソッドを起動した
結果、再帰的に連続してメソッドが起動され、巨大なヒープを消費するなどにより
処理が複雑になることがあり、そのような状況に対処するためである。
例えば、mergerのコードを参照のこと。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
KLICを拡張することができる
- もちろん、あるデータがジェネリック・オブジェクトかどうかの
判定は出来る。また、そのジェネリック・オブジェクトが、後述する3種類
の内のどの種類のジェネリック・オブジェクトかの判定も出来る。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
それぞれの状態に対応する値
- 中断の場合は中断原因の変数への参照
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
それぞれの状態に対応する値
- 中断の場合は中断原因
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... 参照先が変数
- コンシューマ(群) や中断ゴールがフックしている
変数も含む.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
直接呼びだすことにより行われている。
- よって、KLICでは、関数のアドレスがずれるような状況、例えば、
ノード間でloadmoduleのリンクの順などが異るため関数アドレスがずれている場合、
また、ノード間で命令コードアーキテクチャが異る場合などは、
このままでは対応できない)。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...暗黙前方参照方式の、さらに詳細な処理分化
- 詳細は現在不明。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.