1 .class public LB27799205_3; 2 .super Ljava/lang/Object; 3 4 # A class with an unresolved array type should not fail hard (unless it's a primitive-type access). 5 # Make sure that merging is pro-active. 6 7 .method public static run()V 8 .registers 1 9 return-void 10 .end method 11 12 # Use some non-object non-array input (non-Object because the merge should be Object). 13 .method public static test(Ljava/lang/Integer;[Ldo/not/resolve/K;Z)V 14 .registers 6 15 # Make v0, v1 and v2 null. We'll use v0 as a merge of the inputs, v1 as null, and v2 as 0. 16 const v0, 0 17 const v1, 0 18 const v2, 0 19 20 # Conditional jump so we have a merge point. 21 if-eqz v5, :LabelSelectUnresolved 22 23 :LabelSelectResolved 24 move-object v0, v3 25 goto :LabelMerged 26 27 :LabelSelectUnresolved 28 move-object v0, v4 29 goto :LabelMerged 30 31 :LabelMerged 32 # At this point, v0 should be Object. 33 34 # Test aput-object: v0[v2] = v1. Should fail for v0 not being an array. 35 aput-object v1, v0, v2 36 37 return-void 38 39 .end method 40