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