method Base.():void { .src "entryHooks.java" .line 27 .prologue_end .line 27 0| invoke-static/range {v2..v2}, Tracer.OnEntry(Base):void 3| move-object v0, v2 .local v0, "this", Base 4| move-object v1, v0 5| invoke-direct {v1}, java.lang.Object.():void 8| return-void } method Base.foo(int, java.lang.String):int { .params "?", "?" .src "entryHooks.java" .line 31 .prologue_end .line 31 0| invoke-static/range {v10..v12}, Tracer.OnEntry(Base, int, java.lang.String):void 3| move-object v0, v10 .local v0, "this", Base 4| move v1, v11 .local v1, "x", int 5| move-object v2, v12 .local v2, "msg", java.lang.String 6| sget-object v3, java.lang.System.out 8| const-string v4, "Base.foo(%d, '%s')\n" 10| const/4 v5, #+2 (0x00000002 | 2.80260e-45) 11| new-array v5, v5, java.lang.Object[] 13| move-object v9, v5 14| move-object v5, v9 15| move-object v6, v9 16| const/4 v7, #+0 (0x00000000 | 0.00000) 17| move v8, v1 18| invoke-static {v8}, java.lang.Integer.valueOf(int):java.lang.Integer 21| move-result-object v8 22| aput-object v8, v6, v7 24| move-object v9, v5 25| move-object v5, v9 26| move-object v6, v9 27| const/4 v7, #+1 (0x00000001 | 1.40130e-45) 28| move-object v8, v2 29| aput-object v8, v6, v7 31| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 34| move-result-object v3 .line 32 35| move v3, v1 36| move v0, v3 .end_local v0 37| return v0 } method Derived.():void { .src "entryHooks.java" .line 36 .prologue_end .line 36 0| invoke-static/range {v2..v2}, Tracer.OnEntry(Derived):void 3| move-object v0, v2 .local v0, "this", Derived 4| move-object v1, v0 5| invoke-direct {v1}, Base.():void 8| return-void } method Derived.foo(int, java.lang.String):int { .params "?", "?" .src "entryHooks.java" .line 40 .prologue_end .line 40 0| invoke-static/range {v10..v12}, Tracer.OnEntry(Derived, int, java.lang.String):void 3| move-object v0, v10 .local v0, "this", Derived 4| move v1, v11 .local v1, "x", int 5| move-object v2, v12 .local v2, "msg", java.lang.String 6| sget-object v3, java.lang.System.out 8| const-string v4, "Derived.foo(%d, '%s')\n" 10| const/4 v5, #+2 (0x00000002 | 2.80260e-45) 11| new-array v5, v5, java.lang.Object[] 13| move-object v9, v5 14| move-object v5, v9 15| move-object v6, v9 16| const/4 v7, #+0 (0x00000000 | 0.00000) 17| move v8, v1 18| invoke-static {v8}, java.lang.Integer.valueOf(int):java.lang.Integer 21| move-result-object v8 22| aput-object v8, v6, v7 24| move-object v9, v5 25| move-object v5, v9 26| move-object v6, v9 27| const/4 v7, #+1 (0x00000001 | 1.40130e-45) 28| move-object v8, v2 29| aput-object v8, v6, v7 31| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 34| move-result-object v3 .line 41 35| move v3, v1 36| const/4 v4, #+2 (0x00000002 | 2.80260e-45) 37| mul-int/lit8 v3, v3, #+2 (0x00000002 | 2.80260e-45) 39| move v0, v3 .end_local v0 40| return v0 } method Target.():void { .src "entryHooks.java" .line 45 .prologue_end .line 45 0| invoke-static/range {v2..v2}, Tracer.OnEntry(Target):void 3| move-object v0, v2 .local v0, "this", Target 4| move-object v1, v0 5| invoke-direct {v1}, java.lang.Object.():void 8| return-void } method Target.main(java.lang.String[]):void { .params "?" .src "entryHooks.java" .line 51 .prologue_end .line 51 0| invoke-static/range {v8..v8}, Tracer.OnEntry(java.lang.String[]):void 3| move-object v0, v8 .local v0, "args", java.lang.String[] 4| sget-object v1, java.lang.System.out 6| const-string v2, "Hello, world!" 8| invoke-virtual {v1,v2}, java.io.PrintStream.println(java.lang.String):void .line 52 11| sget-object v1, java.lang.System.out 13| const-string v2, "final = %d\n" 15| const/4 v3, #+1 (0x00000001 | 1.40130e-45) 16| new-array v3, v3, java.lang.Object[] 18| move-object v7, v3 19| move-object v3, v7 20| move-object v4, v7 21| const/4 v5, #+0 (0x00000000 | 0.00000) 22| invoke-static {}, Target.test():int 25| move-result v6 26| invoke-static {v6}, java.lang.Integer.valueOf(int):java.lang.Integer 29| move-result-object v6 30| aput-object v6, v4, v5 32| invoke-virtual {v1,v2,v3}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 35| move-result-object v1 .line 53 36| sget-object v1, java.lang.System.out 38| const-string v2, "Good bye!" 40| invoke-virtual {v1,v2}, java.io.PrintStream.println(java.lang.String):void .line 54 43| return-void } method Target.test():int { .src "entryHooks.java" .line 58 .prologue_end .line 58 0| invoke-static/range {}, Tracer.OnEntry():void 3| new-instance v1, Target 5| move-object v4, v1 6| move-object v1, v4 7| move-object v2, v4 8| invoke-direct {v2}, Target.():void 11| move-object v0, v1 .line 59 .local v0, "obj", Target 12| move-object v1, v0 13| new-instance v2, Derived 15| move-object v4, v2 16| move-object v2, v4 17| move-object v3, v4 18| invoke-direct {v3}, Derived.():void 21| iput-object v2, v1, Target.test .line 60 23| move-object v1, v0 24| const/4 v2, #+3 (0x00000003 | 4.20390e-45) 25| const-string v3, "Testing..." 27| invoke-virtual {v1,v2,v3}, Target.foo(int, java.lang.String):int 30| move-result v1 31| move v0, v1 .end_local v0 32| return v0 } method Target.foo(int):int { .params "?" .src "entryHooks.java" .line 74 .prologue_end .line 74 0| invoke-static/range {v3..v4}, Tracer.OnEntry(Target, int):void 3| move-object v0, v3 .local v0, "this", Target 4| move v1, v4 .local v1, "x", int 5| const/4 v2, #+1 (0x00000001 | 1.40130e-45) 6| move v0, v2 .end_local v0 7| return v0 } method Target.foo(int, int):int { .params "?", "?" .src "entryHooks.java" .line 75 .prologue_end .line 75 0| invoke-static/range {v4..v6}, Tracer.OnEntry(Target, int, int):void 3| move-object v0, v4 .local v0, "this", Target 4| move v1, v5 .local v1, "x", int 5| move v2, v6 .local v2, "y", int 6| const/4 v3, #+2 (0x00000002 | 2.80260e-45) 7| move v0, v3 .end_local v0 8| return v0 } method Target.foo(int, java.lang.String):int { .params "?", "?" .src "entryHooks.java" .line 65 .prologue_end .line 65 0| invoke-static/range {v9..v11}, Tracer.OnEntry(Target, int, java.lang.String):void 3| move-object v0, v9 .local v0, "this", Target 4| move v1, v10 .local v1, "x", int 5| move-object v2, v11 .local v2, "msg", java.lang.String 6| const/4 v5, #+0 (0x00000000 | 0.00000) 7| move v3, v5 .line 66 .local v3, "sum", int 8| const/4 v5, #+0 (0x00000000 | 0.00000) 9| move v4, v5 Label_1: .local v4, "i", int 10| move v5, v4 11| move v6, v1 12| if-ge v5, v6, Label_2 .line 68 14| move v5, v3 15| move-object v6, v0 16| iget-object v6, v6, Target.test 18| move v7, v4 19| move-object v8, v2 20| invoke-virtual {v6,v7,v8}, Base.foo(int, java.lang.String):int 23| move-result v6 24| add-int/2addr v5, v6 25| move v3, v5 .line 66 26| add-int/lit8 v4, v4, #+1 (0x00000001 | 1.40130e-45) 28| goto/16 Label_1 Label_2: .line 70 30| move v5, v3 31| move v0, v5 .end_local v0 32| return v0 } method Target.foo(int, java.lang.String, java.lang.String):int { .params "?", "?", "?" .src "entryHooks.java" .line 76 .prologue_end .line 76 0| invoke-static/range {v5..v8}, Tracer.OnEntry(Target, int, java.lang.String, java.lang.String):void 3| move-object v0, v5 .local v0, "this", Target 4| move v1, v6 .local v1, "x", int 5| move-object v2, v7 .local v2, "msg", java.lang.String 6| move-object v3, v8 .local v3, "msg2", java.lang.String 7| const/4 v4, #+3 (0x00000003 | 4.20390e-45) 8| move v0, v4 .end_local v0 9| return v0 } method Target.foo(int, java.lang.String[]):int { .params "?", "?" .src "entryHooks.java" .line 77 .prologue_end .line 77 0| invoke-static/range {v4..v6}, Tracer.OnEntry(Target, int, java.lang.String[]):void 3| move-object v0, v4 .local v0, "this", Target 4| move v1, v5 .local v1, "x", int 5| move-object v2, v6 .local v2, "msgs", java.lang.String[] 6| const/4 v3, #+4 (0x00000004 | 5.60519e-45) 7| move v0, v3 .end_local v0 8| return v0 } method Target.foo(int, java.lang.String[][]):java.lang.Integer { .params "?", "?" .src "entryHooks.java" .line 78 .prologue_end .line 78 0| invoke-static/range {v4..v6}, Tracer.OnEntry(Target, int, java.lang.String[][]):void 3| move-object v0, v4 .local v0, "this", Target 4| move v1, v5 .local v1, "x", int 5| move-object v2, v6 .local v2, "msgs", java.lang.String[][] 6| const/4 v3, #+5 (0x00000005 | 7.00649e-45) 7| invoke-static {v3}, java.lang.Integer.valueOf(int):java.lang.Integer 10| move-result-object v3 11| move-object v0, v3 .end_local v0 12| return-object v0 } method Target.foo():void { .src "entryHooks.java" .line 73 .prologue_end .line 73 0| invoke-static/range {v0..v0}, Tracer.OnEntry(Target):void 3| return-void } method Tracer.():void { .src "entryHooks.java" .line 2 .prologue_end .line 2 0| invoke-static/range {v2..v2}, Tracer.OnEntry(Tracer):void 3| move-object v0, v2 .local v0, "this", Tracer 4| move-object v1, v0 5| invoke-direct {v1}, java.lang.Object.():void 8| return-void } method Tracer.onEntry(java.lang.String):void { .params "?" .src "entryHooks.java" .line 6 .prologue_end .line 6 0| invoke-static/range {v5..v5}, Tracer.OnEntry(java.lang.String):void 3| move-object v0, v5 .local v0, "methodName", java.lang.String 4| sget-object v1, java.lang.System.out 6| new-instance v2, java.lang.StringBuilder 8| move-object v4, v2 9| move-object v2, v4 10| move-object v3, v4 11| invoke-direct {v3}, java.lang.StringBuilder.():void 14| const-string v3, "OnEntry(" 16| invoke-virtual {v2,v3}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder 19| move-result-object v2 20| move-object v3, v0 21| invoke-virtual {v2,v3}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder 24| move-result-object v2 25| const-string v3, ")" 27| invoke-virtual {v2,v3}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder 30| move-result-object v2 31| invoke-virtual {v2}, java.lang.StringBuilder.toString():java.lang.String 34| move-result-object v2 35| invoke-virtual {v1,v2}, java.io.PrintStream.println(java.lang.String):void .line 7 38| return-void } method Tracer.onFooEntry(Target, int, java.lang.String):void { .params "?", "?", "?" .src "entryHooks.java" .line 11 .prologue_end .line 11 0| invoke-static/range {v10..v12}, Tracer.OnEntry(Target, int, java.lang.String):void 3| move-object v0, v10 .local v0, "__this", Target 4| move v1, v11 .local v1, "x", int 5| move-object v2, v12 .local v2, "msg", java.lang.String 6| sget-object v3, java.lang.System.out 8| const-string v4, ">>> onFooEntry(%s, %d, %s)\n" 10| const/4 v5, #+3 (0x00000003 | 4.20390e-45) 11| new-array v5, v5, java.lang.Object[] 13| move-object v9, v5 14| move-object v5, v9 15| move-object v6, v9 16| const/4 v7, #+0 (0x00000000 | 0.00000) 17| move-object v8, v0 18| aput-object v8, v6, v7 20| move-object v9, v5 21| move-object v5, v9 22| move-object v6, v9 23| const/4 v7, #+1 (0x00000001 | 1.40130e-45) 24| move v8, v1 25| invoke-static {v8}, java.lang.Integer.valueOf(int):java.lang.Integer 28| move-result-object v8 29| aput-object v8, v6, v7 31| move-object v9, v5 32| move-object v5, v9 33| move-object v6, v9 34| const/4 v7, #+2 (0x00000002 | 2.80260e-45) 35| move-object v8, v2 36| aput-object v8, v6, v7 38| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 41| move-result-object v3 .line 12 42| return-void } method Tracer.onFooExit(int):int { .params "?" .src "entryHooks.java" .line 16 .prologue_end .line 16 0| invoke-static/range {v8..v8}, Tracer.OnEntry(int):void 3| move v0, v8 .local v0, "retValue", int 4| sget-object v1, java.lang.System.out 6| const-string v2, ">>> onFooExit(%d)\n" 8| const/4 v3, #+1 (0x00000001 | 1.40130e-45) 9| new-array v3, v3, java.lang.Object[] 11| move-object v7, v3 12| move-object v3, v7 13| move-object v4, v7 14| const/4 v5, #+0 (0x00000000 | 0.00000) 15| move v6, v0 16| invoke-static {v6}, java.lang.Integer.valueOf(int):java.lang.Integer 19| move-result-object v6 20| aput-object v6, v4, v5 22| invoke-virtual {v1,v2,v3}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 25| move-result-object v1 .line 17 26| move v1, v0 27| const/16 v2, #+100 (0x00000064 | 1.40130e-43) 29| add-int/lit8 v1, v1, #+100 (0x00000064 | 1.40130e-43) 31| move v0, v1 .end_local v0 32| return v0 } method Tracer.wrapFoo(Base, int, java.lang.String):int { .params "?", "?", "?" .src "entryHooks.java" .line 22 .prologue_end .line 22 0| invoke-static/range {v10..v12}, Tracer.OnEntry(Base, int, java.lang.String):void 3| move-object v0, v10 .local v0, "_this", Base 4| move v1, v11 .local v1, "x", int 5| move-object v2, v12 .local v2, "msg", java.lang.String 6| sget-object v3, java.lang.System.out 8| const-string v4, ">>> %s.test(%d, %s)\n" 10| const/4 v5, #+3 (0x00000003 | 4.20390e-45) 11| new-array v5, v5, java.lang.Object[] 13| move-object v9, v5 14| move-object v5, v9 15| move-object v6, v9 16| const/4 v7, #+0 (0x00000000 | 0.00000) 17| move-object v8, v0 18| invoke-virtual {v8}, java.lang.Object.getClass():java.lang.Class 21| move-result-object v8 22| invoke-virtual {v8}, java.lang.Class.getName():java.lang.String 25| move-result-object v8 26| aput-object v8, v6, v7 28| move-object v9, v5 29| move-object v5, v9 30| move-object v6, v9 31| const/4 v7, #+1 (0x00000001 | 1.40130e-45) 32| move v8, v1 33| invoke-static {v8}, java.lang.Integer.valueOf(int):java.lang.Integer 36| move-result-object v8 37| aput-object v8, v6, v7 39| move-object v9, v5 40| move-object v5, v9 41| move-object v6, v9 42| const/4 v7, #+2 (0x00000002 | 2.80260e-45) 43| move-object v8, v2 44| aput-object v8, v6, v7 46| invoke-virtual {v3,v4,v5}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 49| move-result-object v3 .line 23 50| move-object v3, v0 51| move v4, v1 52| move-object v5, v2 53| invoke-virtual {v3,v4,v5}, Base.foo(int, java.lang.String):int 56| move-result v3 57| const/16 v4, #+10 (0x0000000a | 1.40130e-44) 59| add-int/lit8 v3, v3, #+10 (0x0000000a | 1.40130e-44) 61| move v0, v3 .end_local v0 62| return v0 }