【.NET】参照代入はただのコピーじゃない? GC write barrierを調べてみた
はじめに C#で参照型の値を代入するとき、単に参照を書き換えるだけではなく、GCのための処理が入ることがあるのを知っていますか? 私は現在、.NET上で動く低アロケーションなJavaScriptエンジンOkojoを開発しています。 https://github.com/akeit0/okojo Okojoの開発中にJITの生成コードを見ていると、JavaScriptの変数代入でCORINFO_HELP_ASSIGN_REFがかなり多く使われていることに気づきました。JavaScriptエンジンでは値の代入が頻繁に起きるので、「これを減らせないかな」と思ったのが今回のきっかけです。 こ...























