Skip to content

Inst のメモリレイアウトをまともにする #3

@nojima

Description

@nojima

現在の VM は Inst 一つ一つにメモリを個別に割り当てているため、非常に効率が悪い。配列上に一列に並べるべき。

設計

  • 現在、Inst が仮想関数を持っているが、これを排除して仮想関数を持たないようにする。
  • どの Inst であるかどうかを判定するための kind メンバを持たせる。dispatch は、kind に対する switch で行う。
  • code は Inst を vector の上に隙間なく敷き詰めるようなレイアウトにする。
  • Inst の具体クラスのサイズは 8 の倍数になるように注意しないといけない。そういないとアライメントが狂う。
  • 現在 ip++ としているところは、ip += sizeof(...) という形になる。
  • 現在 dynamic_cast で Inst の種類を判定しているところは、kind の比較に置き換える。

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions