Subscribed unsubscribe Subscribe Subscribe

枕を欹てて聴く

香炉峰の雪は簾を撥げて看る

サイボウズ・ラボユースの最終成果報告会にて発表しました

3/26に発表してきました. 資料は以下にあります.

iv / lv5, ECMA262 Engine

内容は主に, ECMA262 5.1th Engine, lv5の独自性である仕様準拠性, Register VM概説, またrailgun::Compilerの独自のRegisterの割り当て方による効率的なRegister Allocation(個人的には, ゆるゆりメソッドと呼んでいます), Stack VM / Register VMの論争点の一つであるcode sizeについての考察などです.

時間があれば, JavaScriptの変数の解析, 及び参照の解析などについても話したかったのですが, それをやるとスライド数が爆発するのでやめています...(direct call to eval, with, argumentsがあるとどうなるかとか, immutable bindingとの兼ね合いだとか, strict mode下でできる最適化だとか, argumentsという変数が隠された場合にはargumentsを作る必要がなくなることが静的解析可能な場合があるとか...)

参加して

サイボウズ・ラボユースに1年間参加させていただきました.

書籍, LuaPython, JSCやRubyなど様々なsource codeを読んでVMの仕組みなどを勉強したり, 論文を読んだり, 非常に有意義な時間を過ごすことが出来ました.

それにより, Engineも当初のECMA262のInterpretation Algorithmを実行するAST Interpreterから, Stack VM, そしてRegister VMを構築するなど, VMの基礎的なことや, VM levelでの最適化のやり方, Bytecode Compilerについての知識など, 非常に勉強になりました.
また, JavaScript Engineには必ず必要になってきつつある, Polymorphic Inline Cacheの実装などの知識を得ることが出来ました.

また, 新屋さん, 林さんら, 同期の方々のすごさに圧倒され, 非常に刺激的でした!

サイボウズ・ラボのみなさまには, 非常に多くのアドバイスを頂き, とても感謝しております.
asmなどについて非常に基礎的な知識も持っていなかったのですが, x86/x64についてや, Xbyakについてメモリ自動伸長optionをつけていただくなど, 様々な点でアドバイスを頂き, とてもためになりました.
また, ECMA262についても, 様々なことを教えていただきました.

謝辞

この1年間, 参加して非常に有意義な時間を過ごすことが出来ました. 本当にありがとうございました!