4.3.6.1. インスタンスの構造の修正
最初のステップは、 クラスの再定義が行われたインスタンスの構造を その新しいクラスの定義に合わせることです。
新しいクラスの定義によって定義されたローカルスロットは、 古いクラスではローカルとしても共有としても指定されていない場合は追加されます。 さらに新しいクラス定義ではローカルとしても共有としても指定されていないスロットが、 古いクラスではローカルとして定義されていたものは削除されます。 それらの追加されたスロットと削除されたスロットの名前は、 次の章で説明されるupdate-instance-for-redefined-class
の 引数に渡されます。
新しいクラスと古いクラスの両方で ローカルスロットとして指定されたものの値は保持されます。 もしそのようなローカルスロットがunbound
のときは、 それはunbound
のままです。
古いクラスでは共有として指定されたスロットの値は、 新しいクラスでローカルスロットのときは保持されます。 もしそのような共有スロットがunbound
のときは、 ローカルスロットもunbound
です。