読者です 読者をやめる 読者になる 読者になる

ByteCode

ActionScript2の場合、Flashのパブリッシュ設定でデバッグの許可にチェックを付けると、拡張子がswdのデバッグ情報ファイルが作られるけれど、こうするとswf中のActionScriptのByteCodeが最適化されない事に気づいた。

DefineFunction2だとローカル変数用にレジスタが使われるけれども、そのDefineFunction2が使われなくて全て古いDefineFunctionになってしまう。FlashにそもそもActionScriptの最適化のオプションがないからなぁ。。

デバッグの許可にチェックを入れると、swfのDefineFunction中で以下のActionを使うので連想配列的にAtomにローカル変数をしまう感じになる。
ActionDefineLocal
ActionSetVariable
ActionGetVariable

デバッグの許可にチェックを入れないと、swfのDefineFunction2中では以下のActionを使ってレジスタを使うようになっている。
ActionPush
ActionStoreRegister

DefineFunction2だと255個のレジスタが使えるようになって、それより前は4つまでのレジスタが使えるらしい。
しかしAS2だとコンパイラが殆ど最適化してくれないな。。ほぼ記述したまんまのコードになってる。