You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.4 KiB
46 lines
1.4 KiB
.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
|