型なし言語逝ってよし
■ このスレッドは過去ログ倉庫に格納されています
0547532
NGNGやれば可能だけど、class型の変数へのメッセージ送信のように
単純かつ効率的じゃあなくなる。
例えば単純な実装方法を一つ考えてみると、
1. まずは各classについて、そのclassがimplementsするinterface
ごとにvtableを用意する。
(classとinterfaceの組み合わせ個数のvtableが必要)
2. message receiverから変数の型として宣言されているinterface用の
vtableを引く。この時、compilerはinterface名しか知らない事に注意。
(classからinterface用のvtableを参照するテーブルを単純な配列で
実装するのなら、システム中の全interfaceの個数分のサイズが必要で
それを実行時にもclass毎に用意しておく)
3. 得られたinterface用のvtableでmethodを引いてdispatchする。
実行時にclassをloadしたりしないという前提でも、これだけ面倒な事になります。
また、実行時にclassをloadしなくて、かつ、これだけvtableのために
メモリを使う余裕があるのなら、動的型付け言語でも同様な事ができる。
つまり、各class毎に、システム中全てのmethod名についてのvtableを作ればいい。
これなら参照が一段で済むから、上記のinterface用vtableよりずっと速い (藁
■ このスレッドは過去ログ倉庫に格納されています