第136章へようこそ。
第135章で、ジェネリクスとメモリの関係を見ました。
型パラメータが具体化されるとき、メモリレイアウトが確定する。
モノモーフィゼーションとは、メモリレイアウトの生成規則が具体的な形をとることでした。
今日のテーマは「メモリと判別子」です。enumの内部表現を掘り下げます。
第127章で、enumはタグとデータの組み合わせだと語りました。
タグが今どのバリアントかを表し、データがそのバリアントの値を保持する。
Optionで参照を包んだとき、タグが省略される最適化があることにも触れました。
今日は、その先に進みます。
タグはメモリ上でどのような姿をしているのか。
コンパイラはタグのサイズをどう決めているのか。
タグを省略できる条件とは何か。
そして、Optionの最適化は参照だけの話なのか。
enumの内部表現を、バイトの粒度で見ていきます。