method Target.():void { .src "exitHooks.java" .line 28 0| move-object/16 v15, v25 3| move-object/16 v14, v15 6| move-object/16 v13, v14 .prologue_end .line 28 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 "exitHooks.java" .line 32 0| move-object/16 v15, v26 3| move-object/16 v14, v15 6| move-object/16 v13, v14 .prologue_end .line 32 9| move-object v10, v13 .local v10, "args", java.lang.String[] 10| sget-object v11, java.lang.System.out 12| const-string v12, "Hello, world!\n{" 14| invoke-virtual {v11,v12}, java.io.PrintStream.println(java.lang.String):void .line 33 17| invoke-static {}, Target.test():void .line 34 20| sget-object v11, java.lang.System.out 22| const-string v12, "}\nGood bye!" 24| invoke-virtual {v11,v12}, java.io.PrintStream.println(java.lang.String):void .line 35 27| return-void } method Target.test():void { .src "exitHooks.java" .line 39 .prologue_end .line 39 0| new-instance v1, Target 2| move-object v8, v1 3| move-object v1, v8 4| move-object v2, v8 5| invoke-direct {v2}, Target.():void 8| move-object v0, v1 .line 40 .local v0, "obj", Target 9| sget-object v1, java.lang.System.out 11| const-string v2, "Object(true) : %s\n" 13| const/4 v3, #+1 (0x00000001 | 1.40130e-45) 14| new-array v3, v3, java.lang.Object[] 16| move-object v8, v3 17| move-object v3, v8 18| move-object v4, v8 19| const/4 v5, #+0 (0x00000000 | 0.00000) 20| move-object v6, v0 21| const/4 v7, #+1 (0x00000001 | 1.40130e-45) 22| invoke-virtual {v6,v7}, Target.testObject(boolean):java.lang.Object 25| move-result-object v6 26| aput-object v6, v4, v5 28| invoke-virtual {v1,v2,v3}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 31| move-result-object v1 .line 41 32| sget-object v1, java.lang.System.out 34| const-string v2, "Object(false) : %s\n" 36| const/4 v3, #+1 (0x00000001 | 1.40130e-45) 37| new-array v3, v3, java.lang.Object[] 39| move-object v8, v3 40| move-object v3, v8 41| move-object v4, v8 42| const/4 v5, #+0 (0x00000000 | 0.00000) 43| move-object v6, v0 44| const/4 v7, #+0 (0x00000000 | 0.00000) 45| invoke-virtual {v6,v7}, Target.testObject(boolean):java.lang.Object 48| move-result-object v6 49| aput-object v6, v4, v5 51| invoke-virtual {v1,v2,v3}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 54| move-result-object v1 .line 42 55| sget-object v1, java.lang.System.out 57| const-string v2, "double : %s\n" 59| const/4 v3, #+1 (0x00000001 | 1.40130e-45) 60| new-array v3, v3, java.lang.Object[] 62| move-object v8, v3 63| move-object v3, v8 64| move-object v4, v8 65| const/4 v5, #+0 (0x00000000 | 0.00000) 66| move-object v6, v0 67| const/4 v7, #+3 (0x00000003 | 4.20390e-45) 68| invoke-virtual {v6,v7}, Target.testDouble(int):double 71| move-result-wide v6:v7 72| invoke-static {v6,v7}, java.lang.Double.valueOf(double):java.lang.Double 75| move-result-object v6 76| aput-object v6, v4, v5 78| invoke-virtual {v1,v2,v3}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 81| move-result-object v1 .line 43 82| sget-object v1, java.lang.System.out 84| const-string v2, "int : %s\n" 86| const/4 v3, #+1 (0x00000001 | 1.40130e-45) 87| new-array v3, v3, java.lang.Object[] 89| move-object v8, v3 90| move-object v3, v8 91| move-object v4, v8 92| const/4 v5, #+0 (0x00000000 | 0.00000) 93| move-object v6, v0 94| const/16 v7, #+100 (0x00000064 | 1.40130e-43) 96| invoke-virtual {v6,v7}, Target.testInt(int):int 99| move-result v6 100| invoke-static {v6}, java.lang.Integer.valueOf(int):java.lang.Integer 103| move-result-object v6 104| aput-object v6, v4, v5 106| invoke-virtual {v1,v2,v3}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 109| move-result-object v1 .line 44 110| move-object v1, v0 111| const/4 v2, #+1 (0x00000001 | 1.40130e-45) 112| invoke-virtual {v1,v2}, Target.testVoid(boolean):void .line 45 115| return-void } method Target.testDouble(int):double { .params "?" .src "exitHooks.java" .line 60 0| move-object/16 v14, v27 3| move/16 v15, v28 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 60 18| move-object v8, v12 .local v8, "this", Target 19| move v9, v13 .local v9, "n", int 20| move v10, v9 21| packed-switch v10, Label_5 .line 65 24| const-wide v10:v11, #+4621762822593629389 (0x4023cccccccccccd | 9.90000) 29| move-wide v8:v9, v10:v11 Label_1: .end_local v8 30| return-wide v8:v9 Label_2: .line 62 .restart_local v8 31| const-wide v10:v11, #+4607632778762754458 (0x3ff199999999999a | 1.10000) 36| move-wide v8:v9, v10:v11 37| goto/16 Label_1 Label_3: .line 63 39| const-wide v10:v11, #+4612136378390124954 (0x400199999999999a | 2.20000) 44| move-wide v8:v9, v10:v11 45| goto/16 Label_1 Label_4: .line 64 47| const-wide v10:v11, #+4614613358185178726 (0x400a666666666666 | 3.30000) 52| move-wide v8:v9, v10:v11 53| goto/16 Label_1 55| nop Label_5: .line 60 56| packed-switch-payload 1: Label_2 2: Label_3 3: Label_4 } method Target.testInt(int):int { .params "?" .src "exitHooks.java" .line 71 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 71 18| move-object v9, v12 .local v9, "this", Target 19| move v10, v13 .local v10, "n", int 20| move v11, v10 21| sparse-switch v11, Label_5 .line 76 24| const/16 v11, #+123 (0x0000007b | 1.72360e-43) 26| move v9, v11 Label_1: .end_local v9 27| return v9 Label_2: .line 73 .restart_local v9 28| const/4 v11, #+1 (0x00000001 | 1.40130e-45) 29| move v9, v11 30| goto/16 Label_1 Label_3: .line 74 32| const/4 v11, #+2 (0x00000002 | 2.80260e-45) 33| move v9, v11 34| goto/16 Label_1 Label_4: .line 75 36| const/4 v11, #+3 (0x00000003 | 4.20390e-45) 37| move v9, v11 38| goto/16 Label_1 .line 71 40| nop 41| nop Label_5: 42| sparse-switch-payload 10: Label_2 20: Label_3 30: Label_4 } method Target.testObject(boolean):java.lang.Object { .params "?" .src "exitHooks.java" .line 49 0| move-object/16 v14, v28 3| move/16 v15, v29 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 49 18| move-object v7, v12 .local v7, "this", Target 19| move v8, v13 .local v8, "flag", boolean 20| move v9, v8 21| if-eqz v9, Label_2 .line 51 23| sget-object v9, java.lang.System.out 25| const-string v10, "Flag!\n" 27| const/4 v11, #+0 (0x00000000 | 0.00000) 28| new-array v11, v11, java.lang.Object[] 30| invoke-virtual {v9,v10,v11}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 33| move-result-object v9 .line 52 34| const-string v9, "Sigh" 36| move-object v7, v9 Label_1: .line 55 .end_local v7 37| return-object v7 Label_2: .restart_local v7 38| const-string v9, "Blah" 40| move-object v7, v9 41| goto/16 Label_1 } method Target.testVoid(boolean):void { .params "?" .src "exitHooks.java" .line 82 0| move-object/16 v14, v28 3| move/16 v15, v29 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 82 18| move-object v7, v12 .local v7, "this", Target 19| move v8, v13 .local v8, "flag", boolean 20| move v9, v8 21| if-eqz v9, Label_2 .line 84 23| sget-object v9, java.lang.System.out 25| const-string v10, "True!\n" 27| const/4 v11, #+0 (0x00000000 | 0.00000) 28| new-array v11, v11, java.lang.Object[] 30| invoke-virtual {v9,v10,v11}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 33| move-result-object v9 Label_1: .line 85 .line 90 34| return-void Label_2: .line 89 35| sget-object v9, java.lang.System.out 37| const-string v10, "False!\n" 39| const/4 v11, #+0 (0x00000000 | 0.00000) 40| new-array v11, v11, java.lang.Object[] 42| invoke-virtual {v9,v10,v11}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 45| move-result-object v9 .line 90 46| goto/16 Label_1 } method Tracer.():void { .src "exitHooks.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.onExit(double):double { .params "?" .src "exitHooks.java" .line 12 0| move-wide/16 v14:v15, v33:v34 3| move-wide/16 v13:v14, v14:v15 6| move-wide/16 v12:v13, v13:v14 .prologue_end .line 12 9| move-wide v2:v3, v12:v13 .local v2, "value", double 10| sget-object v4, java.lang.System.out 12| const-string v5, ">>> onExit(double: %f)\n" 14| const/4 v6, #+1 (0x00000001 | 1.40130e-45) 15| new-array v6, v6, java.lang.Object[] 17| move-object v11, v6 18| move-object v6, v11 19| move-object v7, v11 20| const/4 v8, #+0 (0x00000000 | 0.00000) 21| move-wide v9:v10, v2:v3 22| invoke-static {v9,v10}, java.lang.Double.valueOf(double):java.lang.Double 25| move-result-object v9 26| aput-object v9, v7, v8 28| invoke-virtual {v4,v5,v6}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 31| move-result-object v4 .line 13 32| move-wide v4:v5, v2:v3 33| neg-double v4:v5, v4:v5 34| move-wide v2:v3, v4:v5 .end_local v2 35| return-wide v2:v3 } method Tracer.onExit(int):int { .params "?" .src "exitHooks.java" .line 18 0| move/16 v15, v31 3| move/16 v14, v15 6| move/16 v13, v14 .prologue_end .line 18 9| move v5, v13 .local v5, "value", int 10| sget-object v6, java.lang.System.out 12| const-string v7, ">>> onExit(int: %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 19 32| move v6, v5 33| const/16 v7, #+10 (0x0000000a | 1.40130e-44) 35| mul-int/lit8 v6, v6, #+10 (0x0000000a | 1.40130e-44) 37| move v5, v6 .end_local v5 38| return v5 } method Tracer.onExit(java.lang.Object):java.lang.Object { .params "?" .src "exitHooks.java" .line 6 0| move-object/16 v15, v31 3| move-object/16 v14, v15 6| move-object/16 v13, v14 .prologue_end .line 6 9| move-object v5, v13 .local v5, "value", java.lang.Object 10| sget-object v6, java.lang.System.out 12| const-string v7, ">>> onExit(Object: %s)\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-object v11, v5 22| aput-object v11, v9, v10 24| invoke-virtual {v6,v7,v8}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 27| move-result-object v6 .line 7 28| move-object v6, v5 29| move-object v5, v6 .end_local v5 30| return-object v5 } method Tracer.onExit():void { .src "exitHooks.java" .line 24 .prologue_end .line 24 0| sget-object v0, java.lang.System.out 2| const-string v1, ">>> onExit(void)\n" 4| const/4 v2, #+0 (0x00000000 | 0.00000) 5| new-array v2, v2, java.lang.Object[] 7| invoke-virtual {v0,v1,v2}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream 10| move-result-object v0 .line 25 11| return-void }