目次

バイトコード比較結果

期待通り mainの中の動作が大幅に異なる。
HelloAspectWorld?.main()の処理は
  • HelloAspectWorld?クラスのインスタンスを作る
  • HelloAspectWorld?.sayhello()を呼び出す
  • だけなので、javacで作成したバイトコードのTEXT部分はクラス、インスタンスを作って
    メソッド呼び出しをして終了しているのだが、
    0 new #2 <Class HelloAspectWorld?>
    3 dup
    4 invokenonvirtual #3 <Method HelloAspectWorld?.<init>():void>
    7 invokevirtual #4 <Method HelloAspectWorld?.sayhello():void>
   10 return
ajcで作成したバイトコードのTEXT部分は期待通りである。
# まぁ、期待通りの割になんだかよくわからんが・・
太字部分が javacで出てくる普通の所である。
    0 new #2 <Class HelloAspectWorld?>
    3 dup
    4 invokenonvirtual #16 <Method HelloAspectWorld?.<init>():void>
    7 invokestatic #43 <Method Trace.aspectOf():Trace>
   10 invokevirtual #46 <Method Trace.ajc$before$Trace$1$705b637b():void>
   13 invokevirtual #19 <Method HelloAspectWorld?.sayhello():void>
   16 goto 28
   19 astore_1
   20 invokestatic #43 <Method Trace.aspectOf():Trace>
   23 invokevirtual #49 <Method Trace.ajc$after$Trace$2$705b637b():void>
   26 aload_1
   27 athrow
   28 nop
   29 invokestatic #43 <Method Trace.aspectOf():Trace>
   32 invokevirtual #49 <Method Trace.ajc$after$Trace$2$705b637b():void>
   35 nop
   36 return

Last-modified: 2006-01-13 17:40:41