[981] Re:関数の型の宣言構文について
投稿者:みずしま
2007/06/26 00:51:15
>どこまでVMに実行時情報を持たせるかにもよりますが、たとえばJVMでは、
>T型の変数 a, b があるとき、
>Tがintのときの a = b; と、Tがdoubleのときの a = b;を同一のバイトコードでは
>表現できないのでは?
>Javaはクラスに関する限りポインタ(参照)しかない言語ですし、
>Genericsで対象にできるのは結局Objectだけなので、コンパイラだけで
>ごまかしきれてますけれども。
はい。ただ、それは全ての型について同一のバイトコードで扱えなければならないという方針の場合の話であって、例えば、基本型は型ごとにコード複製、参照型はErasureによって同一のバイトコードに変換するなどの方針であればコンパイラだけでごまかせると思います。
>基本型は対象にしないとしても、クラスの(ポインタでなく)実体を扱えるように
>した場合、C++のように機械語を吐くコンパイラでは、「何バイトコピーするか」が
>型ごとに違ってきます。このへんVMだと工夫のしようはありそうですが。
確かに。ただ、ASTや中間表現の段階で実体型ごとにコードを複製しておけば、「何バイトコピーするか」などの詳細はコード生成部に任せられるのでは?