4.3.6.2. 新しく追加されたローカルスロットの初期化
二番目のステップは、新しく追加された局所スロットを初期化し、 その他のユーザー定義のアクションを実行します。 このステップはジェネリック関数update-instance-for-redefined-class
に よって実装され、最初のステップの インスタンスの構造の修正が完了した後でこの関数が呼ばれます。
ジェネリック関数update-instance-for-redefined-class
は、 4つの引数が要求されます。 それは最初のステップが実行された後の更新されているインスタンス、 追加されたローカルスロットの名前のリスト、 削除されたローカルスロットの名前のリスト、 そして削除されたスロットとその保有されていた値である スロット名と値を含んだプロパティリストの、 以上4つです。 削除されたスロットには、古いクラスではローカルスロットであり、 新しいクラスでは共有スロットのものが含まれます。
ジェネリック関数update-instance-for-redefined-class
は、 任意の数の初期化引数もまた受け取ります。 これがシステムによるクラス再定義のインスタンスの更新によって呼び出されたとき、 初期化引数は提供されません。
システムから供給される ジェネリック関数update-instance-for-redefined-class
の プライマリメソッドのインスタンスの引数の特定パラメーターは クラスstandard-object
です。 最初にこのメソッドは 初期化引数の有効性を確認し、 もし初期化引数が有効なものとして宣言されていなかったときは エラーが発生します (より詳しくは7.1.2. 初期化引数の有効性の宣言をご確認ください)。 それから、それはジェネリック関数shared-initialize
を 次のような引数で呼び出します。 引数は、インスタンス、新しく追加されるスロットの名前のリスト、 そして受け取った初期化引数です。