1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
.class public LB22331663;
.super Ljava/lang/Object;
.method public static run(Z)V
.registers 6
# Make v4 defined, just use null.
const v4, 0
if-eqz v5, :Label2
:Label1
# Construct a java.lang.Object completely, and throw a new exception.
new-instance v4, Ljava/lang/Object;
invoke-direct {v4}, Ljava/lang/Object;-><init>()V
new-instance v3, Ljava/lang/RuntimeException;
invoke-direct {v3}, Ljava/lang/RuntimeException;-><init>()V
throw v3
:Label2
# Allocate a java.lang.Object (do not initialize), and throw a new exception.
new-instance v4, Ljava/lang/Object;
new-instance v3, Ljava/lang/RuntimeException;
invoke-direct {v3}, Ljava/lang/RuntimeException;-><init>()V
throw v3
:Label3
# Catch handler. Here we had to merge the uninitialized with the initialized reference,
# which creates a conflict. Copy the conflict, and then return. This should not make the
# verifier fail the method.
move-object v0, v4
return-void
.catchall {:Label1 .. :Label3} :Label3
.end method
|