• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.class public LOK;
2
3.super Ljava/lang/Object;
4
5.method public static run(Ljava/lang/Object;Ljava/lang/Object;)V
6   .registers 3
7
8   invoke-static {v1, v2}, LOK;->runNoMonitors(Ljava/lang/Object;Ljava/lang/Object;)V
9
10   invoke-static {v1, v2}, LOK;->runStraightLine(Ljava/lang/Object;Ljava/lang/Object;)V
11
12   invoke-static {v1, v2}, LOK;->runStraightLine2(Ljava/lang/Object;Ljava/lang/Object;)V
13
14   invoke-static {v1, v2}, LOK;->runBalancedJoin(Ljava/lang/Object;Ljava/lang/Object;)V
15
16   return-void
17
18.end method
19
20
21
22.method public static runNoMonitors(Ljava/lang/Object;Ljava/lang/Object;)V
23   .registers 3
24
25   invoke-static {}, LMain;->assertIsManaged()V
26
27   return-void
28
29.end method
30
31.method public static runStraightLine(Ljava/lang/Object;Ljava/lang/Object;)V
32   .registers 3
33
34   invoke-static {}, LMain;->assertIsManaged()V
35
36   monitor-enter v1      # 1
37   monitor-enter v2      # 2
38
39   monitor-exit v2       # 2
40   monitor-exit v1       # 1
41
42   return-void
43
44.end method
45
46.method public static runStraightLine2(Ljava/lang/Object;Ljava/lang/Object;)V
47   .registers 3
48
49   invoke-static {}, LMain;->assertIsManaged()V
50
51   monitor-enter v1      # 1
52   monitor-enter v2      # 2
53
54   # No-op move should not invalidate locking information.
55   move-object v2, v2
56
57   monitor-exit v2       # 2
58   monitor-exit v1       # 1
59
60   return-void
61
62.end method
63
64.method public static runBalancedJoin(Ljava/lang/Object;Ljava/lang/Object;)V
65   .registers 3
66
67   invoke-static {}, LMain;->assertIsManaged()V
68
69   monitor-enter v1      # 1
70
71   if-eqz v2, :Lnull
72
73:LnotNull
74
75   monitor-enter v2      # 2
76   goto :Lend
77
78:Lnull
79   monitor-enter v2      # 2
80
81:Lend
82
83   monitor-exit v2       # 2
84   monitor-exit v1       # 1
85
86   return-void
87
88.end method
89