Listen

Description

第136章へようこそ。

第135章で、ジェネリクスとメモリの関係を見ました。

型パラメータが具体化されるとき、メモリレイアウトが確定する。

モノモーフィゼーションとは、メモリレイアウトの生成規則が具体的な形をとることでした。

今日のテーマは「メモリと判別子」です。enumの内部表現を掘り下げます。

第127章で、enumはタグとデータの組み合わせだと語りました。

タグが今どのバリアントかを表し、データがそのバリアントの値を保持する。

Optionで参照を包んだとき、タグが省略される最適化があることにも触れました。

今日は、その先に進みます。

タグはメモリ上でどのような姿をしているのか。

コンパイラはタグのサイズをどう決めているのか。

タグを省略できる条件とは何か。

そして、Optionの最適化は参照だけの話なのか。

enumの内部表現を、バイトの粒度で見ていきます。