私の smalltalk 方言に動的リンクを実装することを計画しています。問題は、動的リンクでメッセージ パッシングを機能させることです。
メッセージの受け渡し自体は次のように単純です。セレクターを含むメッセージがオブジェクトに送信され、オブジェクトはそのプロトコルからセレクターに一致するメソッドを取得し、メッセージにバンドルされたデータを処理して結果を返します。
画像ベースの実装では、非常に簡単な方法でメッセージ パッシングを実装できます。メッセージ セレクターは、グローバル シンボル テーブルから変換された単なる整数にすることができ、プロトコルは、整数とアドレスを含むハッシュ テーブルにすることができます。そのグローバル シンボル テーブルを使用して、すべてが 1 つの大きなイメージにコンパイルされていると仮定します。
動的リンクでは、シンボル テーブルが正しいセレクターを指していると想定することはできません。文字列をセレクターとして使用することで問題を回避できますが、言語が遅くなる運命にあります。
1 つの方法があり、プロトコルとセレクターのテーブルをコピーして、プロセスがそれらを適切に再配置する必要があります。しかし、それはかなりの労力のように聞こえます。
この問題を解決するためのより良い方法はありますか? また、動的リンクはそれだけの価値がありますか? セレクターとプロトコルの再配置を実装するにはどうすればよいですか?