blob: 6c4be400d3c67e9ee1098c4cad593084acb159df [file] [log] [blame]
.class public LB22411633_2;
.super Ljava/lang/Object;
.method public static run(Z)V
.registers 6
# Make v3 & v4 defined, just use null.
const v3, 0
const v4, 0
# Allocate a java.lang.Object (do not initialize).
new-instance v4, Ljava/lang/Object;
# Branch forward.
if-eqz v5, :LabelMerge
# Create a non-precise object reference. We can do this by merging to objects together
# that only have Object as a common ancestor.
# Allocate a java.lang.Object and initialize it.
new-instance v4, Ljava/lang/Object;
invoke-direct {v4}, Ljava/lang/Object;-><init>()V
if-nez v5, :LabelMergeObject
new-instance v4, Ljava/lang/Integer;
invoke-direct {v4}, Ljava/lang/Integer;-><init>()V
:LabelMergeObject
# Arbitrary work to separate blocks. At this point, v4 is of type Reference<Object>.
add-int/lit16 v3, v3, 1
:LabelMerge
# Merge the uninitialized Object from line 12 with the reference to Object from 31. Older
# rules set any reference merged with Object to Object. This is wrong in the case of the
# other reference being an uninitialized reference, as we'd suddenly allow calling on it.
# Test whether it's some initialized reference by calling hashCode. This should fail, as we
# merged initialized and uninitialized.
invoke-virtual {v4}, Ljava/lang/Object;->hashCode()I
return-void
.end method