>はい。ただ、それは全ての型について同一のバイトコードで扱えなければならないという方針の場合の話であって、例えば、基本型は型ごとにコード複製、参照型はErasureによって同一のバイトコードに変換するなどの方針であればコンパイラだけでごまかせると思います。
それはそうです。実際C#だと、値型はコード複製、参照型は同一コードということに
なっているようですし。
http://ja.wikipedia.org/wiki/C_Sharp%E3%81%A8Java%E3%81%AE%E6%AF%94%E8%BC%83
>確かに。ただ、ASTや中間表現の段階で実体型ごとにコードを複製しておけば、
>「何バイトコピーするか」などの詳細はコード生成部に任せられるのでは?
ASTや中間表現は共通で、コード複製はコード生成部で行うことになるのだと
思いますけれども、それをいつやるか、という問題がありますよね。
Javaのような実行形態を考えると、Listクラスはきっと事前にコンパイルされて
いるはずですし、List<int>を使うクラスがあっちにもこっちにもあるとすると、
コンパイルの時点で複製すると悲惨なことに。