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;->runBalancedJoin(Ljava/lang/Object;Ljava/lang/Object;)V 13 14 return-void 15 16 .end method 17 18 19 20 .method public static runNoMonitors(Ljava/lang/Object;Ljava/lang/Object;)V 21 .registers 3 22 23 invoke-static {}, LMain;->assertIsManaged()V 24 25 return-void 26 27 .end method 28 29 .method public static runStraightLine(Ljava/lang/Object;Ljava/lang/Object;)V 30 .registers 3 31 32 invoke-static {}, LMain;->assertIsManaged()V 33 34 monitor-enter v1 # 1 35 monitor-enter v2 # 2 36 37 monitor-exit v2 # 2 38 monitor-exit v1 # 1 39 40 return-void 41 42 .end method 43 44 .method public static runBalancedJoin(Ljava/lang/Object;Ljava/lang/Object;)V 45 .registers 3 46 47 invoke-static {}, LMain;->assertIsManaged()V 48 49 monitor-enter v1 # 1 50 51 if-eqz v2, :Lnull 52 53 :LnotNull 54 55 monitor-enter v2 # 2 56 goto :Lend 57 58 :Lnull 59 monitor-enter v2 # 2 60 61 :Lend 62 63 monitor-exit v2 # 2 64 monitor-exit v1 # 1 65 66 return-void 67 68 .end method 69