You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

535 lines
15 KiB

method Base.<init>():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.<init>():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.<init>():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.<init>():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.<init>():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.<init>():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.<init>():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.<init>():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.<init>():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.<init>():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.<init>():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
}