netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2003-11-05 古い日記からの変換データ [長年日記] ▲
_ 論文 ▲
AspectJ の Weave プロセスを紹介した論文がAOSD2004 に投稿されたらしい.
Erik Hilsdale, Jim Hugunin:Advice Weaving in AspectJ
・AspectJ のアドバイスがどうバイトコードにコンパイルされるか 特殊変数を参照していない場合はそれらのデータが 渡されるのを省略してパフォーマンス改善
・Join Point shadows pointcut 定義はあくまで実行時の Join Point 集合だが, それをソース上にマップした shadow として 何をとるか,pointcut designator との対応表.
・変換されたコードは AJ_SYNTHETIC 属性を持つ. これは Java の assert や C.class が変換されたコードが SYNTHETIC 属性を持つのと同じ (Java VM Specification に書いてあるらしい).
・コードのインライン展開は,パッケージ可視性や private メンバへのアクセス問題があったのでやめたらしい.
・ロギングなど,処理の有無をオン/オフできるようにする場合, AspectJ ではアドバイス実行のコストが高いので, PCD の if(enabled) -- static boolean enabled; などと書くと,多少改善するらしい.
_ AspectJ ▲
call pointcut はメソッド呼び出し自体にしかマッチしないから,around で call を潰したとしても引数の評価は行われてしまう,らしい.
副作用や,重たい処理を含んだ引数評価があるとはまりそう.