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